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 翻译