CF2229C1 We Be Flipping (Easy Version)
题目描述
这是该问题的简单版本。不同版本的区别在于本版本你需要最小化数组元素之和。只有在你完成了所有版本的问题后才可以尝试 hack。
你有一个长度为 $n$ 的数组 $a$,其中所有元素均为非零整数(但可能为负数)。你最多可以执行 $n$ 次(也可以一次都不执行)如下操作:
- 选择一个下标 $i$($1 \le i \le n$),要求 $a_i > 0$;
- 然后对于所有 $j$ 满足 $1 \le j \le i$,执行 $a_j := -a_j$。
请输出长度不超过 $n$ 的一个操作序列,使得最终 $a$ 的元素之和被$\color{red}{\text{最小化}}$。
输入格式
每组测试数据包含多组数据。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试数据的组数。
每组测试数据的第一行包含一个整数 $n$($2 \le n \le 2 \times 10^5$),表示数组 $a$ 的长度。
第二行包含 $n$ 个整数 $a_1,a_2,\ldots,a_n$($-10^9 \le a_i \le 10^9,\, a_i \ne 0$)。
保证所有测试数据中 $n$ 的总和不超过 $2 \times 10^5$。
输出格式
对于每组测试数据,首先输出一个整数 $k$($0 \le k \le n$),表示你将执行的操作次数。
接下来输出 $k$ 个整数 $b_1,\ldots,b_k$,其中 $b_i$ 表示你第 $i$ 次操作选择的下标。
所有操作结束后,$a$ 的元素之和应最小。
说明/提示
在第一个样例中,数组之和已经最小,因此不需要任何操作。
在第二个样例中,操作步骤如下:
- $[-1, -2, 3, -5, 4] \xrightarrow{i = 3} [\color{red}{1, 2, -3}, -5, 4]$
- $[1, 2, -3, -5, 4] \xrightarrow{i = 5} [\color{red}{-1, -2, 3, 5, -4}]$
- $[-1, -2, 3, 5, -4] \xrightarrow{i = 4} [\color{red}{1, 2, -3, -5}, -4]$
- $[1, 2, -3, -5, -4] \xrightarrow{i = 2} [\color{red}{-1, -2}, -3, -5, -4]$
最终得到的元素之和为 $-15$,这是最小可能值。
由 ChatGPT 5 翻译