CF2062G.Permutation Factory

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

给定两个长度为 nn 的排列 p1,p2,…,pnp_1, p_2, \ldots, p_n 和 q1,q2,…,qnq_1, q_2, \ldots, q_n。每次操作中,你可以选择两个不同的整数 1≤i,j≤n1 \leq i, j \leq n 并交换 pip_i 和 pjp_j。该操作的成本为 min⁡(∣i−j∣,∣pi−pj∣)\min(|i - j|, |p_i - p_j|)。

请找到使 pi=qip_i = q_i 对所有 1≤i≤n1 \leq i \leq n 成立的最小总成本,并输出达成该目标的交换操作序列。

一个长度为 nn 的排列是由 11 到 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 \leq t \leq 10^4)——测试用例数量。

每个测试用例:

  • 第一行包含一个整数 nn(2≤n≤1002 \le n \le 100)——排列 pp 和 qq 的长度。
  • 第二行包含 nn 个整数 p1,p2,…,pnp_1, p_2, \ldots, p_n(1≤pi≤n1 \leq p_i \leq n)——排列 pp。保证 pp 是 1,2,…,n1, 2, \ldots, n 的排列。
  • 第三行包含 nn 个整数 q1,q2,…,qnq_1, q_2, \ldots, q_n(1≤qi≤n1 \leq q_i \leq n)——排列 qq。保证 qq 是 1,2,…,n1, 2, \ldots, n 的排列。

保证所有测试用例的 n3n^3 之和不超过 10610^6。

输出格式

对于每个测试用例:

  • 第一行输出操作总次数 kk(0≤k≤n20 \le k \le n^2)。
  • 接下来 kk 行每行输出两个整数 i,ji, j(1≤i,j≤n1 \le i, j \le n,i≠ji \neq j),表示按顺序执行的交换操作。

可以证明最优解的操作序列长度不会超过 n2n^2。

输入输出样例

  • 输入#1

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

    输出#1

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

说明/提示

第二个测试用例中,交换 p1p_1 和 p3p_3 的成本为 min⁡(∣1−3∣,∣1−3∣)=2\min(|1 - 3|, |1 - 3|) = 2,此时 pp 等于 qq,总成本为 22。

第三个测试用例中,可执行以下操作:
初始时 p=[2,1,4,3]p = [2, 1, 4, 3]。

  1. 交换 p1p_1 和 p4p_4,成本 min⁡(∣1−4∣,∣2−3∣)=1\min(|1 - 4|, |2 - 3|) = 1,得到 p=[3,1,4,2]p = [3, 1, 4, 2]。
  2. 交换 p2p_2 和 p4p_4,成本 min⁡(∣2−4∣,∣1−2∣)=1\min(|2 - 4|, |1 - 2|) = 1,得到 p=[3,2,4,1]p = [3, 2, 4, 1]。
  3. 交换 p1p_1 和 p3p_3,成本 min⁡(∣1−3∣,∣3−4∣)=1\min(|1 - 3|, |3 - 4|) = 1,此时 pp 等于 qq,总成本为 33。

翻译由 DeepSeek R1 完成

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

首页