CF1993B.Parity and Sum

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

Parity and Sum

题目描述

给定一个包含 nn 个整数的数组 aa

每次操作中,你可以选择任意一个数对 (i,j)(i,j),使得 aia_iaja_j 奇偶性不同,即 aia_iaja_j 既不同为奇数也不同为偶数。然后将 aia_iaja_j 中值较小的那一个的元素的值替换为这两个元素的和,即:

  • 如果 ai<aja_i<a_j,那么将 aia_i 替换为 ai+aja_i+a_j
  • 否则将 aja_j 替换为 ai+aja_i+a_j

现在需要通过若干次上述操作使得数组 aa 中所有元素的奇偶性相同。请你求出最少需要多少次操作。

输入格式

本题包含多组数据。

第一行输入一个整数 TT,表示数据组数。

对于每组数据,第一行输入一个整数 nn,表示数组 aa 内元素个数。第二行输入 nn 个整数,第 ii 个整数代表数组 aa 内的第 ii 个元素 aia_i

输出格式

对于每组数据,输出仅一行,表示最少需要的操作次数。

输入输出样例

见下文 输入 #1输出 #1

样例 #1 解释

对于第一组数据,显然数组 aa 里面的 55 个元素都是奇数,因此无需任何操作。

对于第三组数据,一种操作次数最少的方案如下表所示。

操作次数 选择数对 aa 数组
00 / [2,3,4][2,3,4]
11 (1,2)(1,2) [5,3,4][\underline5,\underline3,4]
22 (1,3)(1,3) [5,3,9][\underline5,3,\underline9]

对于第四组数据,一种操作次数最少的方案如下表所示。

操作次数 选择数对 aa 数组
00 / [3,2,2,8][3,2,2,8]
11 (1,2)(1,2) [3,5,2,8][\underline3,\underline5,2,8]
22 (1,3)(1,3) [3,5,5,8][\underline3,5,\underline5,8]
33 (1,4)(1,4) [11,5,5,8][\underline{11},5,5,\underline8]
44 [11,5,5,19][\underline{11},5,5,\underline{19}]

说明/提示

对于所有数据:

  • 1T1041\leqslant T\leqslant 10^4
  • 1n2×1051\leqslant n\leqslant 2\times10^5n2×105\sum n\leqslant 2\times 10^5
  • i[1,n],1ai109\forall i\in[1,n],1\leqslant a_i\leqslant 10^9

Translated by Eason_AC

样例

7
5
1 3 5 7 9
4
4 4 4 4
3
2 3 4
4
3 2 2 8
6
4 3 6 1 2 1
6
3 6 1 2 1 2
5
999999996 999999997 999999998 999999999 1000000000
0
0
2
4
3
3
3

在线编程 IDE

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