CF1523B Lord of the Values
题目描述
在他最喜欢的交易所进行交易时,交易员 William 发现了一个漏洞。利用这个漏洞,他可以将某些内部变量的值更改为对自己有利的数值。为了好玩,他决定将所有内部变量的值从 $a_1, a_2, \ldots, a_n$ 变为 $-a_1, -a_2, \ldots, -a_n$。出于某种未知的原因,服务变量的数量总是偶数。
William 明白,每进行一次操作,他就会引起交易所安全团队越来越多的注意,因此他的操作次数不能超过 $5\,000$,并且每次操作后,任何变量的绝对值都不能超过 $10^{18}$。William 可以对任意两个下标为 $i$ 和 $j$ 的变量进行如下两种类型的操作(其中 $i < j$):
1. 执行赋值 $a_i = a_i + a_j$
2. 执行赋值 $a_j = a_j - a_i$
William 希望你能帮他设计一个策略,使所有内部变量都变为目标值。
输入格式
每个测试点包含多个测试用例。第一行包含测试用例数量 $t$($1 \le t \le 20$)。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个偶数 $n$($2 \le n \le 10^3$),表示内部变量的数量。
每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^9$),表示内部变量的初始值。
输出格式
对于每个测试用例,输出如下格式的答案:
输出的第一行应为操作总数 $k$,即策略需要执行的操作数。注意,你不需要最小化 $k$,但必须满足 $k \le 5\,000$。
接下来的 $k$ 行,每行输出一个操作,格式为“type i j”,其中“type”为 $1$ 表示执行第一种操作,“type”为 $2$ 表示执行第二种操作。注意应满足 $i < j$。
可以证明,总是存在解。
说明/提示
对于第一个样例测试用例,一种可能的操作序列如下:
1. "2 1 2"。执行操作后变量值为:\[1, 0, 1, 1\]
2. "2 1 2"。执行操作后变量值为:\[1, -1, 1, 1\]
3. "2 1 3"。执行操作后变量值为:\[1, -1, 0, 1\]
4. "2 1 3"。执行操作后变量值为:\[1, -1, -1, 1\]
5. "2 1 4"。执行操作后变量值为:\[1, -1, -1, 0\]
6. "2 1 4"。执行操作后变量值为:\[1, -1, -1, -1\]
7. "1 1 2"。执行操作后变量值为:\[0, -1, -1, -1\]
8. "1 1 2"。执行操作后变量值为:\[-1, -1, -1, -1\]
对于第二个样例测试用例,一种可能的操作序列如下:
1. "2 1 4"。执行操作后变量值为:\[4, 3, 1, -2\]
2. "1 2 4"。执行操作后变量值为:\[4, 1, 1, -2\]
3. "1 2 4"。执行操作后变量值为:\[4, -1, 1, -2\]
4. "1 2 4"。执行操作后变量值为:\[4, -3, 1, -2\]
5. "1 3 4"。执行操作后变量值为:\[4, -3, -1, -2\]
6. "1 1 2"。执行操作后变量值为:\[1, -3, -1, -2\]
7. "1 1 2"。执行操作后变量值为:\[-2, -3, -1, -2\]
8. "1 1 4"。执行操作后变量值为:\[-4, -3, -1, -2\]
由 ChatGPT 4.1 翻译