CF1834A Unit Array
题目描述
给定一个长度为 $n$ 的数组 $a$,其中每个元素均为 $-1$ 或 $1$。我们称数组 $a$ 为“好数组”,当且仅当同时满足以下两个条件:
- $a_1 + a_2 + \ldots + a_n \ge 0$;
- $a_1 \cdot a_2 \cdot \ldots \cdot a_n = 1$。
每次操作,你可以选择数组中的任意一个元素 $a_i$,并将其值变为相反数。也就是说,如果 $a_i = -1$,你可以将其赋值为 $a_i := 1$;如果 $a_i = 1$,则可以赋值为 $a_i := -1$。
请你计算,最少需要进行多少次操作,才能使数组 $a$ 变为“好数组”。可以证明,总是存在一种方案使得数组 $a$ 变为“好数组”。
输入格式
每组测试数据包含多个测试用例。第一行包含一个整数 $t$($1 \le t \le 500$),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 100$),表示数组 $a$ 的长度。
每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($a_i = \pm 1$),表示数组 $a$ 的元素。
输出格式
对于每个测试用例,输出一个整数,表示将数组 $a$ 变为“好数组”所需的最小操作次数。
说明/提示
在第一个测试用例中,我们可以将 $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$。因此,我们共进行了 $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$。因此,我们共进行了 $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$。因此,所有条件都已满足,无需进行任何操作。
在第四个测试用例中,我们可以将 $a_1 := 1, a_2 := 1, a_3 := 1$。此时 $a_1 + a_2 + a_3 = 1 + 1 + 1 = 3 \ge 0$,且 $a_1 \cdot a_2 \cdot a_3 = 1 \cdot 1 \cdot 1 = 1$。因此,我们共进行了 $3$ 次操作。
由 ChatGPT 4.1 翻译