CF2084C.You Soared Afar With Grace

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定两个长度为 nn 的排列 aa 和 bb ∗^{\text{∗}}。你最多可以进行 nn 次如下操作:

  • 选择两个下标 ii 和 jj(1≤i,j≤n1 \le i, j \le n,i≠ji \ne j),交换 aia_i 和 aja_j,同时交换 bib_i 和 bjb_j。

判断是否可以通过这些操作使得 aa 和 bb 互为逆序排列。换句话说,对于每个 i=1,2,…,ni = 1, 2, \ldots, n,满足 ai=bn+1−ia_i = b_{n + 1 - i}。

如果可能,输出任意一个有效的操作序列;否则输出 −1-1。

∗^{\text{∗}} 长度为 nn 的排列是指由 11 到 nn 的 nn 个不同整数按任意顺序组成的数组。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是排列(因为 22 在数组中出现了两次),[1,3,4][1,3,4] 也不是排列(因为 n=3n=3 但数组中包含 44)。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 tt(1≤t≤1041 \le t \le 10^4)。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn(2≤n≤2⋅1052 \le n \le 2 \cdot 10^5)——排列的长度。
第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤n1 \le a_i \le n)。
第三行包含 nn 个整数 b1,b2,…,bnb_1, b_2, \ldots, b_n(1≤bi≤n1 \le b_i \le n)。

保证 aa 和 bb 都是长度为 nn 的排列。
保证所有测试用例的 nn 之和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例:

  • 如果不可能满足条件,输出一行 −1-1。
  • 否则,第一行输出一个整数 mm(0≤m≤n0 \le m \le n)表示操作次数。接下来的 mm 行,每行输出两个整数 ii 和 jj(1≤i,j≤n1 \le i, j \le n,i≠ji \ne j),表示每次操作交换的下标。如果有多个解,输出任意一个即可。

输入输出样例

  • 输入#1

    5
    2
    1 2
    1 2
    2
    1 2
    2 1
    4
    1 3 2 4
    2 4 1 3
    5
    2 5 1 3 4
    3 5 4 2 1
    5
    3 1 2 4 5
    1 2 3 4 5

    输出#1

    -1
    0
    1
    1 2
    2
    1 2
    1 3
    -1

说明/提示

  • 在第二个测试用例中,bb 已经是 aa 的逆序排列,因此不需要操作。
  • 在第三个测试用例中,执行以下操作后,bb 将成为 aa 的逆序排列:
    • 交换 a1,a2a_1, a_2 和 b1,b2b_1, b_2。此时 a=[3,1,2,4]a = [3, 1, 2, 4],b=[4,2,1,3]b = [4, 2, 1, 3]。
  • 在第四个测试用例中,按顺序执行以下操作后,bb 将成为 aa 的逆序排列:
    • 交换 a1,a2a_1, a_2 和 b1,b2b_1, b_2。此时 a=[5,2,1,3,4]a = [5, 2, 1, 3, 4],b=[5,3,4,2,1]b = [5, 3, 4, 2, 1]。
    • 交换 a1,a3a_1, a_3 和 b1,b3b_1, b_3。此时 a=[1,2,5,3,4]a = [1, 2, 5, 3, 4],b=[4,3,5,2,1]b = [4, 3, 5, 2, 1]。

翻译由 DeepSeek V3 完成

输入解题思路,AI测评打分。不知道怎么写?

首页