CF1709 1709
题目描述
给定两个整数数组 $a_1, a_2, \ldots, a_n$ 和 $b_1, b_2, \ldots, b_n$。保证从 $1$ 到 $2n$ 的每个整数恰好出现在这两个数组中的一个。
你需要进行若干次操作(可以为零次),使得同时满足以下两个条件:
- 对于每个 $1 \leq i < n$,都有 $a_i < a_{i+1}$ 且 $b_i < b_{i+1}$。
- 对于每个 $1 \leq i \leq n$,都有 $a_i < b_i$。
每次操作,你可以执行以下三种操作之一:
1. 选择一个下标 $1 \leq i < n$,交换 $a_i$ 和 $a_{i+1}$ 的值。
2. 选择一个下标 $1 \leq i < n$,交换 $b_i$ 和 $b_{i+1}$ 的值。
3. 选择一个下标 $1 \leq i \leq n$,交换 $a_i$ 和 $b_i$ 的值。
你不需要最小化操作次数,但总操作次数不能超过 $1709$。请给出任意一种满足条件的操作序列。
输入格式
每组测试数据包含多个测试用例。第一行包含一个整数 $t$($1 \leq t \leq 100$),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 $n$($1 \leq n \leq 40$),表示数组 $a$ 和 $b$ 的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 2n$)。
第三行包含 $n$ 个整数 $b_1, b_2, \ldots, b_n$($1 \leq b_i \leq 2n$)。
保证从 $1$ 到 $2n$ 的每个整数恰好出现在数组 $a$ 或 $b$ 中。
输出格式
对于每个测试用例,输出操作序列。
每个测试用例的第一行输出操作次数 $k$。注意 $0 \leq k \leq 1709$。
接下来的 $k$ 行,每行输出一次操作:
- 如果你要交换 $a_i$ 和 $a_{i+1}$,输出两个整数 $1$ 和 $i$。注意 $1 \leq i < n$。
- 如果你要交换 $b_i$ 和 $b_{i+1}$,输出两个整数 $2$ 和 $i$。注意 $1 \leq i < n$。
- 如果你要交换 $a_i$ 和 $b_i$,输出两个整数 $3$ 和 $i$。注意 $1 \leq i \leq n$。
可以证明,在给定的约束下,总是存在解。
说明/提示
在第一个测试用例中,$a_1 < b_1$,因此无需进行任何操作。
在第二个测试用例中,$a_1 > b_1$。执行一次操作后,这两个值会被交换。
在第三个测试用例中,执行一次操作后,$a = [1, 3]$,$b = [2, 4]$。
在第四个测试用例中,执行一次操作后,$a = [1, 2]$,$b = [3, 4]$。
由 ChatGPT 4.1 翻译