题目名称 2718. [CodeforcesEduR22] 建立军队
输入输出 army.in/out
难度等级 ★★★
时间限制 2000 ms (2 s)
内存限制 512 MiB
测试数据 10
题目来源 Gravatar小字、小瓶子 于2017-06-30加入
开放分组 全部用户
提交状态
分类标签
二分法 线段树
分享题解
通过:2, 提交:7, 通过率:28.57%
Gravatar梦那边的美好ET 100 0.302 s 51.43 MiB C++
Gravatar瑆の時間~無盡輪迴·林蔭 100 0.497 s 20.17 MiB C++
Gravatar瑆の時間~無盡輪迴·林蔭 90 0.427 s 20.17 MiB C++
Gravatar梦那边的美好ET 70 0.318 s 45.71 MiB C++
Gravatar梦那边的美好ET 60 0.251 s 45.71 MiB C++
Gravatar梦那边的美好ET 60 0.258 s 45.71 MiB C++
Gravatar瑆の時間~無盡輪迴·林蔭 0 0.000 s 256.00 MiB C++
关于 建立军队 的近10条评论(全部评论)
回复 @Margatroid :
谢谢修复
Gravatar小字、小瓶子
2017-07-02 21:59 2楼
回复 @卍wspzz=5卍 :
我翻译已经尽力了
Gravatar小字、小瓶子
2017-07-01 11:10 1楼

2718. [CodeforcesEduR22] 建立军队

★★★   输入文件:army.in   输出文件:army.out   简单对比
时间限制:2 s   内存限制:512 MiB

【题目描述】


你可能记得我们之前的几场,$Vova$真的很喜欢电脑游戏。现在他正在玩一种被称为“帝国愤怒”的战略游戏。

在游戏中,$Vova$可以雇佣$n$个不同的战士;第$i$个战士为$a_i$类型。$Vova$希望雇佣来一些战士建立一支平衡的军队。如果在游戏中出现的每一类战士在军队中不超过$k$个此类战士,则此时军队被称为平衡。当然,$Vova$希望他的军队尽可能的大。

为了使事情变得更复杂,$Vova$必须考虑$q$种不同的组建军队的计划。第i个计划要求他雇佣勇士的编号在区间$[l_i,r_i]$之间。

帮助$Vova$确定每个计划中能使军队平衡的最大规模。

请注意,这些计划以一种修改后的方式给出。有关详细信息,请参见输入部分。

【输入格式】


第一行包含两个数$n$和$k(1≤n,k≤10^5)$。

第二行包含n个整数$a_1$,$a_2$,…,$a_n(1≤a_i≤10^5)$。

第三行包含一个整数$q(1≤q≤10^5)$。

之后有q行,每行两个整数$x_i$和$y_i(1≤x_i,y_i≤n)$。

你必须记录上一个计划的结果(让我们把它称为$last$)。开始时$last=$0。然后为了恢复第i计划中$l_i$和$r_i$的价值,你必须做以下工作:

  1.$l_i = ((x_i + last) mod  n) + 1$;

  2.$r_i = ((y_i + last) mod  n) + 1$;

  3.如果$l_i > r_i$,则交换 $l_i$ 和 $r_i$的值。

【输出格式】

输出$q$行,每行一个数字。其中第$i$个数字表示第$i$个计划中能使军队平衡的最大规模。

【样例输入】

6 2
1 1 1 2 2 2
5
1 6
4 3
1 1
2 6
2 6

【样例输出】

2
4
1
3
2

【提示】

样例中计划为: 

1.1 2 

2.1 6 

3.6 6 

4.2 4 

5.4 6

【来源】

codeforces上的Educational Codeforces Round 22 E

http://codeforces.com/contest/813/problem/E