CFCF2170B.Addition on a Segment
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
你有一个整数数组 a,其初始包含 n 个零。你需要执行恰好 n 次如下操作:
- 选择两个整数 l 和 r(1≤l≤r≤n),并对所有满足 l≤i≤r 的 i,执行 ai=ai+1。
现给定另一个长度为 n 的整数数组 b,你的任务是为每一次操作选择合适的 l 和 r,使得:
- 所有 n 次操作执行结束后,可以通过重新排列 a 数组的元素,使 a 变为 b;
- 在所有操作中,r−l+1 的最大值尽可能大。
请你求出 r−l+1 的最大可能值。
输入格式
每组测试包含多个测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例的第一行包含一个整数 n(1≤n≤2×105)——表示数组 b 的长度。
每个测试用例的第二行包含 n 个整数 bi(0≤bi≤n)——表示数组 b 的各个元素。
输入的额外约束:
- 至少存在一种方案可以选择每次操作的 l 和 r,并在最后重排元素,将 a 变为 b;
- 所有测试用例中 n 的总和不超过 2×105。
输出格式
对于每个测试用例,输出一个整数,表示最大的 r−l+1。
输入输出样例
输入#1
3 5 0 5 1 0 1 3 3 2 1 5 1 1 1 1 1
输出#1
3 3 1
说明/提示
以第一个测试用例为例。如果 n 次操作如下:
- l=3,r=3
- l=1,r=3
- l=3,r=3
- l=3,r=3
- l=3,r=3
则数组 a=[1,1,5,0,0],可重排为 [0,5,1,0,1]。可以看到,此时 r−l+1 的最大值为 3,且这是最优答案。
第二个测试用例:
- l=1,r=3
- l=2,r=3
- l=3,r=3
此时答案为 3。