CFCF2170B.Addition on a Segment

普及-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

你有一个整数数组 aa,其初始包含 nn 个零。你需要执行恰好 nn 次如下操作:

  • 选择两个整数 llrr1lrn1 \le l \le r \le n),并对所有满足 lirl \le i \le rii,执行 ai=ai+1a_{i} = a_{i} + 1

现给定另一个长度为 nn 的整数数组 bb,你的任务是为每一次操作选择合适的 llrr,使得:

  • 所有 nn 次操作执行结束后,可以通过重新排列 aa 数组的元素,使 aa 变为 bb
  • 在所有操作中,rl+1r - l + 1 的最大值尽可能大。

请你求出 rl+1r - l + 1 的最大可能值。

输入格式

每组测试包含多个测试用例。第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn1n2×1051 \le n \le 2 \times 10^5)——表示数组 bb 的长度。

每个测试用例的第二行包含 nn 个整数 bib_{i}0bin0 \le b_{i} \le n)——表示数组 bb 的各个元素。

输入的额外约束:

  • 至少存在一种方案可以选择每次操作的 llrr,并在最后重排元素,将 aa 变为 bb
  • 所有测试用例中 nn 的总和不超过 2×1052 \times 10^5

输出格式

对于每个测试用例,输出一个整数,表示最大的 rl+1r - l + 1

输入输出样例

  • 输入#1

    3
    5
    0 5 1 0 1
    3
    3 2 1
    5
    1 1 1 1 1

    输出#1

    3
    3
    1

说明/提示

以第一个测试用例为例。如果 nn 次操作如下:

  • l=3l = 3r=3r = 3
  • l=1l = 1r=3r = 3
  • l=3l = 3r=3r = 3
  • l=3l = 3r=3r = 3
  • l=3l = 3r=3r = 3

则数组 a=[1,1,5,0,0]a = [1, 1, 5, 0, 0],可重排为 [0,5,1,0,1][0, 5, 1, 0, 1]。可以看到,此时 rl+1r - l + 1 的最大值为 33,且这是最优答案。

第二个测试用例:

  • l=1l = 1r=3r = 3
  • l=2l = 2r=3r = 3
  • l=3l = 3r=3r = 3

此时答案为 33

首页