CF2062G.Permutation Factory
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定两个长度为 n 的排列 p1,p2,…,pn 和 q1,q2,…,qn。每次操作中,你可以选择两个不同的整数 1≤i,j≤n 并交换 pi 和 pj。该操作的成本为 min(∣i−j∣,∣pi−pj∣)。
请找到使 pi=qi 对所有 1≤i≤n 成立的最小总成本,并输出达成该目标的交换操作序列。
一个长度为 n 的排列是由 1 到 n 的不同整数按任意顺序组成的数组。例如,[2,3,1,5,4] 是排列,但 [1,2,2] 不是排列(2 重复出现),[1,3,4] 也不是排列(当 n=3 时出现 4)。
输入格式
第一行输入包含一个整数 t(1≤t≤104)——测试用例数量。
每个测试用例:
- 第一行包含一个整数 n(2≤n≤100)——排列 p 和 q 的长度。
- 第二行包含 n 个整数 p1,p2,…,pn(1≤pi≤n)——排列 p。保证 p 是 1,2,…,n 的排列。
- 第三行包含 n 个整数 q1,q2,…,qn(1≤qi≤n)——排列 q。保证 q 是 1,2,…,n 的排列。
保证所有测试用例的 n3 之和不超过 106。
输出格式
对于每个测试用例:
- 第一行输出操作总次数 k(0≤k≤n2)。
- 接下来 k 行每行输出两个整数 i,j(1≤i,j≤n,i=j),表示按顺序执行的交换操作。
可以证明最优解的操作序列长度不会超过 n2。
输入输出样例
输入#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
说明/提示
第二个测试用例中,交换 p1 和 p3 的成本为 min(∣1−3∣,∣1−3∣)=2,此时 p 等于 q,总成本为 2。
第三个测试用例中,可执行以下操作:
初始时 p=[2,1,4,3]。
- 交换 p1 和 p4,成本 min(∣1−4∣,∣2−3∣)=1,得到 p=[3,1,4,2]。
- 交换 p2 和 p4,成本 min(∣2−4∣,∣1−2∣)=1,得到 p=[3,2,4,1]。
- 交换 p1 和 p3,成本 min(∣1−3∣,∣3−4∣)=1,此时 p 等于 q,总成本为 3。
翻译由 DeepSeek R1 完成
输入解题思路,AI测评打分。不知道怎么写?