CF1917A Least Product
题目描述
给定一个整数数组 $a_1, a_2, \dots, a_n$。你可以对数组执行如下操作任意次(可以为零次):
- 选择数组中的任意一个元素 $a_i$,并将其值更改为 $0$ 到 $a_i$ 之间的任意整数(包含端点)。更正式地说,如果 $a_i < 0$,则可以将 $a_i$ 替换为 $[a_i, 0]$ 区间内的任意整数;否则可以将 $a_i$ 替换为 $[0, a_i]$ 区间内的任意整数。
设 $r$ 为经过任意次操作后所有 $a_i$ 的最小可能乘积。
请你求出使得乘积等于 $r$ 所需的最小操作次数,并输出一种最短的操作序列。如果有多种答案,可以输出任意一种。
输入格式
每组测试数据包含多个测试用例。第一行包含一个整数 $t$($1 \leq t \leq 500$)——表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($1 \leq n \leq 100$)——表示数组的长度。
每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($-10^9 \leq a_i \leq 10^9$)。
输出格式
对于每个测试用例:
- 第一行输出最小操作次数 $k$($0 \leq k \leq n$)。
- 接下来的 $k$ 行,每行输出两个整数 $i$ 和 $x$,表示第 $j$ 次操作:将 $a_i$ 替换为 $x$。
说明/提示
在第一个测试用例中,我们可以将第一个整数改为 $0$,此时乘积变为 $0$,这是最小可能值。
在第二个测试用例中,初始时所有整数的乘积为 $2 \cdot 8 \cdot (-1) \cdot 3 = -48$,这已经是最小可能值,因此无需进行任何操作。
由 ChatGPT 4.1 翻译