CF2035H.Peak Productivity Forces
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
我们处在巅峰状态,来解决一个复杂的难题。
现有两组长度为 n 的排列 a 和 b。
你可以对排列 a 进行如下操作:
- 选择一个索引 i(1≤i≤n)。
- 将 a1,a2,…,ai−1 按循环右移一位。如果选择了 i=1,则这一部分不存在,因此无需移动。
- 将 ai+1,ai+2,…,an 按循环右移一位。如果选择了 i=n,则这一部分不存在,因此也无需移动。
执行操作后,排列会从 a1,a2,…,ai−1,ai,ai+1,…,an 变成 ai−1,a1,…,ai−2,ai,an,ai+1,…,an−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 次操作内即可实现。
∗ 长度为 n 的排列是指包含 1 到 n 的任意顺序且互不重复的 n 个整数组成的数组。例如,[2,3,1,5,4] 是一个排列,但 [1,2,2] 不是(因为 2 重复出现),[1,3,4] 也不是(因为缺少 2 且多了 4)。
输入格式
第一行包含一个整数 t(1≤t≤5⋅104)——测试用例的数量。
每个测试用例的第一行包含一个整数 n(1≤n≤5⋅105)——排列 a 和 b 的长度。
接下来的第二行包含 n 个整数 a1,a2,…,an(1≤ai≤n)——排列 a 的元素。
第三行包含 n 个整数 b1,b2,…,bn(1≤bi≤n)——排列 b 的元素。
保证所有测试用例中 n 的总和不超过 5⋅105。
输出格式
对于每个测试用例:
如果可以通过一系列操作将 a 转换为 b,请在第一行输出一个整数 q(0≤q≤2n)——操作次数,第二行输出 q 个整数,第 i 个整数表示第 i 次操作选择的索引。
如果无法完成转换,输出 −1。
输入输出样例
输入#1
4 1 1 1 2 1 2 2 1 3 2 1 3 3 2 1 8 7 8 3 5 4 6 1 2 2 1 6 4 5 3 8 7
输出#1
0 -1 2 1 3 7 3 4 5 1 2 1 1
说明/提示
在第一个测试用例中,a 已经等于 b,因此不需要操作。
在第二个测试用例中,可以证明 a 无法变为 b。
在第三个测试用例中,经过两次操作后,a 变成了与 b 相同的排列。
本翻译由 AI 自动生成
输入解题思路,AI测评打分。不知道怎么写?