该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
Unit Array
题面描述
给定一个长度为 n(1≤n≤100) 的序列 a,所有元素均为 1 或 −1。我们称 a 是一个好序列,当且仅当同时满足以下两个条件:
- a1+a2+...+an≥0;
- a1⋅a2⋅...⋅an=1。
你可以对序列进行若干次修改,每次修改可以把序列中的 −1 改成 1 或从 1 改成 −1。
给定一个序列,问最少需要几次修改使它变成一个好的序列。
输入格式
每个测试由多个测试用例组成。第一行包含一个整数t(1≤t≤500)——测试用例的数量。测试用例的描述如下。
每个测试用例的第一行包含一个整数n(1≤n≤100)——序列a的长度。
每个测试用例的第二行包含n整数a1,a2,…,an(ai=±1)——序列a的元素。
输出格式
对于每个测试用例,输出一个整数——使序列a变成一个好序列所需的最小操作数。
样例 #1
样例输入 #1
样例输出 #1
提示
在第一个测试用例中,我们可以分配值 a1:=1 . 则 a1+a2+a3+a4=1+(−1)+1+(−1)=0≥0 并且 a1⋅a2⋅a3⋅a4=1⋅(−1)⋅1⋅(−1)=1。因此,我们执行了1操作。
在第二个测试用例中,我们可以分配a1:=1 . 则 a1+a2+a3+a4+a5=1+(−1)+(−1)+1+1=1≥0 并且 a1⋅a2⋅a3⋅a4⋅a5=1⋅(−1)⋅(−1)⋅1⋅1=1 . 。因此,我们执行了1操作。
在第三个测试用例中, a1+a2+a3+a4=(−1)+1+(−1)+1=0≥0 a a1⋅a2⋅a3⋅a4=(−1)⋅1⋅(−1)⋅1=1。因此,所有条件都已满足,不需要任何操作。
在第四个测试用例中,我们可以分配值a1:=1,a2:=1,a3:=1。然后a1+a2+a3=1+1+1=3≥0和a1⋅a2⋅a3=1.⋅1⋅1=1。因此,我们执行了3的操作。