CF1746B.Rebellion

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Rebellion

题目描述

你有一个大小为 nn 的数组 aa,其中只包含 0011。你可以进行如下操作:

  • 选择两个下标 1i,jn1 \le i, j \le n,且 iji \ne j
  • aia_i 加到 aja_j 上,
  • 从数组 aa 中移除 aia_i

注意,经过若干次操作后,aa 的元素可以大于 11。同时,数组 aa 的长度每次操作后会减少 11

你的任务是,最少需要多少次操作,才能使数组 aa 非递减,即每个元素都不小于前一个元素?

输入格式

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

每个测试用例的第一行包含一个整数 nn1n1051 \le n \le 10^5),表示数组 aa 的大小。

接下来一行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_naia_i0011),表示数组 aa 的元素。

保证所有测试用例中 nn 的总和不超过 21052 \cdot 10^5

输出格式

对于每个测试用例,输出一个整数,表示使 aa 非递减所需的最小操作次数。

说明/提示

在第一个测试用例中,aa 已经是非递减的,因此不需要进行任何操作,答案为 00

在第二个测试用例中,你可以对 i=1i=1j=5j=5 进行一次操作,此时 aa 变为 [0,0,1,2][0, 0, 1, 2],已经是非递减的。

在第三个测试用例中,你可以对 i=2i=2j=1j=1 进行一次操作,此时 aa 变为 [1][1],已经是非递减的。

由 ChatGPT 4.1 翻译

样例

4
8
0 0 1 1 1 1 1 1
5
1 0 0 1 1
2
1 0
11
1 1 0 0 1 0 0 1 1 1 0
0
1
1
3

在线编程 IDE

建议全屏模式获得最佳体验