51Nod - 1574 排列转换

Posted 小小超plus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51Nod - 1574 排列转换相关的知识,希望对你有一定的参考价值。

现在有两个长度为n的排列p和s。要求通过交换使得p变成s。交换 pipi 和 pjpj 的代价是|i-j|。要求使用最少的代价让p变成s。


Input单组测试数据。 
第一行有一个整数n (1≤n≤200000),表示排列的长度。 
第二行有n个范围是1到n的整数,表示排列p。每个整数只出现一次。 
第三行有n个范围是1到n的整数,表示排列s。每个整数只出现一次。Output输出一个整数,表示从排列p变到s最少要多少代价。Sample Input

样例输入1
4
4 2 1 3
3 2 4 1

Sample Output

样例输出1
3
技术分享图片
 1 #include <iostream>
 2 using namespace std;
 3 #include<string.h>
 4 #include<set>
 5 #include<stdio.h>
 6 #include<math.h>
 7 #include<queue>
 8 #include<map>
 9 #include<algorithm>
10 #include<cstdio>
11 #include<cmath>
12 #include<cstring>
13 #include <cstdio>
14 #include <cstdlib>
15 int  a[210000];
16 int  b[210000];
17 int main()
18 {
19     int t;
20     cin>>t;
21     for(int i=1;i<=t;i++)
22     {
23         int x;
24         cin>>x;
25         a[x]=i;
26     }
27     long long sum=0;
28     for(int i=1;i<=t;i++)
29     {
30         int y;
31         cin>>y;
32         sum+=fabs(a[y]-i);
33     }
34     cout<<sum/2;
35     return 0;
36 }
View Code

 





以上是关于51Nod - 1574 排列转换的主要内容,如果未能解决你的问题,请参考以下文章

51Nod - 1574 排列转换

51nod 1574 排列转换(贪心+鸽巢原理)

51nod1453(排列组合)

51Nod 1384 全排列

51Nod 1384 全排列

51nod 1020 逆序排列