CF2035H Peak Productivity Forces
题目描述
我们处在巅峰状态,来解决一个复杂的难题。
现有两组长度为 $n$ 的排列 $a$ 和 $b$。
你可以对排列 $a$ 进行如下操作:
1. 选择一个索引 $i$($1 \le i \le n$)。
2. 将 $a_1, a_2, \ldots, a_{i-1}$ 按循环右移一位。如果选择了 $i = 1$,则这一部分不存在,因此无需移动。
3. 将 $a_{i + 1}, a_{i + 2}, \ldots, a_n$ 按循环右移一位。如果选择了 $i = n$,则这一部分不存在,因此也无需移动。
执行操作后,排列会从 $a_1, a_2, \ldots, a_{i-1}, a_i, a_{i+1}, \ldots, a_n$ 变成 $a_{i-1}, a_1, \ldots, a_{i-2}, a_i, a_n, a_{i+1}, \ldots, a_{n-1}$。
以下是长度为 $7$ 的单位排列 $[1, 2, 3, 4, 5, 6, 7]$ 的一些操作示例:
- 选择 $i = 3$,排列变为 $[2, 1, 3, 7, 4, 5, 6]$。
- 选择 $i = 1$,排列变为 $[1, 7, 2, 3, 4, 5, 6]$。
- 选择 $i = 7$,排列变为 $[6, 1, 2, 3, 4, 5, 7]$。
注意,第 $i$ 个位置的元素不发生位置变化。请尝试在最多 $2n$ 次操作中,使排列 $a$ 转换为排列 $b$。如果无法实现转换,请输出 $-1$。不需要最小化操作次数。已知如果可以转换,则在不超过 $2n$ 次操作内即可实现。
$^{\text{∗}}$ 长度为 $n$ 的排列是指包含 $1$ 到 $n$ 的任意顺序且互不重复的 $n$ 个整数组成的数组。例如,$[2, 3, 1, 5, 4]$ 是一个排列,但 $[1, 2, 2]$ 不是(因为 $2$ 重复出现),$[1, 3, 4]$ 也不是(因为缺少 $2$ 且多了 $4$)。
输入格式
第一行包含一个整数 $t$($1 \le t \le 5 \cdot 10^4$)——测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 5 \cdot 10^5$)——排列 $a$ 和 $b$ 的长度。
接下来的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le n$)——排列 $a$ 的元素。
第三行包含 $n$ 个整数 $b_1, b_2, \ldots, b_n$($1 \le b_i \le n$)——排列 $b$ 的元素。
保证所有测试用例中 $n$ 的总和不超过 $5 \cdot 10^5$。
输出格式
对于每个测试用例:
如果可以通过一系列操作将 $a$ 转换为 $b$,请在第一行输出一个整数 $q$($0 \le q \le 2n$)——操作次数,第二行输出 $q$ 个整数,第 $i$ 个整数表示第 $i$ 次操作选择的索引。
如果无法完成转换,输出 $-1$。
说明/提示
在第一个测试用例中,$a$ 已经等于 $b$,因此不需要操作。
在第二个测试用例中,可以证明 $a$ 无法变为 $b$。
在第三个测试用例中,经过两次操作后,$a$ 变成了与 $b$ 相同的排列。
**本翻译由 AI 自动生成**