CF1523B Lord of the Values

题目描述

![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1523B/98f109d71d38cfa25029619d650ed4d2b886de82.png)在他最喜欢的交易所进行交易时,交易员 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 翻译