编程题
### 问题描述 一个二进制数组如果元素 $0​$ 的数量和元素 $1​$ 的数量相等,则称其为好的。 大衣有一个长度为 $N​$ 的二进制数组 $A​$,他想通过以下操作将数组变为好的: - 选择两个索引 $i,j(i\ne j)​$,然后将 $A_i,A_j​$ 修改为 $A_i\oplus A_j​$,其中 $\oplus​$ 表示按位异或。 请找出最小的操作次数使得数组 $A​$ 变成好的,如果无论怎么操作都无法满足要求,输出 $-1​$。 ### 输入格式 第一行输入一个正整数 $T​$ 表示测试数据的组数。 接下来 $T​$ 组测试数据每组输入两行: - 第一行输入一个正整数 $N$ 表示二进制数组 $A​$ 的长度。 - 第二行输入 $N$ 个整数 $A_1,A_2,\cdots,A_N$ 表示二进制数组 $A$ 的元素。 ### 输出格式 对于每组测试数据,输出满足题目要求的最小的操作次数,如果无论怎么操作都无法满足要求输出 $-1$,并换行。 ### 样例输入1 ```text 3 1 0 2 1 0 4 1 0 0 0 ``` ### 样例输出1 ```text -1 0 1 ``` ### 说明 样例 $1$:无论怎么操作都无法将数组 $A​$ 变成好的。 样例 $2$:初始时数组 $A$ 元素 $0$ 的个数已经和元素 $1$ 的个数相等,故不需要操作它就是好的。 样例 $3​$:选择 $i=1,j=3​$,然后将 $A_1,A_3​$ 修改为 $A_1\oplus A_3=1\oplus0=1​$,此时数组 $A=[1,0,1,0]​$ 元素 $0​$ 的个数已经和元素 $1​$ 的个数相等,它是好的。 ### 评测数据规模 对于所有的评测数据,$1\le T\le 20$,$1\le N\le 10^4$,$0\le A_i\le1$。
查看答案
赣ICP备20007335号-2