Unit Array.2A

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

Unit Array

题面描述

给定一个长度为 n(1≤n≤100)n (1 \le n \le 100) 的序列 aa,所有元素均为 11 或 −1-1。我们称 aa 是一个好序列,当且仅当同时满足以下两个条件:

  • a1+a2+...+an≥0a_1 + a_2 + ... + a_n \geq 0;
  • a1⋅a2⋅...⋅an=1a_1 \cdot a_2 \cdot...\cdot a_n = 1。

你可以对序列进行若干次修改,每次修改可以把序列中的 −1-1 改成 11 或从 11 改成 −1-1。

给定一个序列,问最少需要几次修改使它变成一个好的序列。

输入格式

每个测试由多个测试用例组成。第一行包含一个整数tt(1≤t≤5001\le t\le 500)——测试用例的数量。测试用例的描述如下。 每个测试用例的第一行包含一个整数nn(1≤n≤1001\le n\le 100)——序列aa的长度。 每个测试用例的第二行包含nn整数a1,a2,…,ana_1,a_2,\ldots,a_n(ai=±1a_i=\pm1)——序列aa的元素。

输出格式

对于每个测试用例,输出一个整数——使序列aa变成一个好序列所需的最小操作数。

样例 #1

样例输入 #1

7
4
-1 -1 1 -1
5
-1 -1 -1 1 1
4
-1 1 -1 1
3
-1 -1 -1
5
1 1 1 1 1
1
-1
2
-1 -1

样例输出 #1

1
1
0
3
0
1
2

提示

在第一个测试用例中,我们可以分配值 a1:=1 a_1 := 1 . 则 $a_1 + a_2 + a_3 + a_4 = 1 + (-1) + 1 + (-1) = 0 \ge 0$ 并且 $a_1 \cdot a_2 \cdot a_3 \cdot a_4 = 1 \cdot (-1) \cdot 1 \cdot (-1) = 1$。因此,我们执行了11操作。 在第二个测试用例中,我们可以分配a1:=1 a_1 := 1 . 则 $a_1 + a_2 + a_3 + a_4 + a_5 = 1 + (-1) + (-1) + 1 + 1 = 1 \ge 0$ 并且 $a_1 \cdot a_2 \cdot a_3 \cdot a_4 \cdot a_5 = 1 \cdot (-1) \cdot (-1) \cdot 1 \cdot 1 = 1$ . 。因此,我们执行了11操作。 在第三个测试用例中, $a_1 + a_2 + a_3 + a_4 = (-1) + 1 + (-1) + 1 = 0 \ge 0$ a $a_1 \cdot a_2 \cdot a_3 \cdot a_4 = (-1) \cdot 1 \cdot (-1) \cdot 1 = 1$。因此,所有条件都已满足,不需要任何操作。 在第四个测试用例中,我们可以分配值a1:=1,a2:=1,a3:=1a_1:=1,a_2:=1,a_3:=1。然后a1+a2+a3=1+1+1=3≥0a_1+a_2+a_3=1+1+1=3\ge0和a1⋅a2⋅a3=1.⋅1⋅1=1a_1\cdot a_2\cdot a_3=1.\cdot1\cdot 1=1。因此,我们执行了33的操作。

有编程基础的同学

未认领
状态
已结束
题目
23
开始时间
2023-10-25 15:30
截止时间
2024-1-31 23:59
可延期
24 小时