zoukankan      html  css  js  c++  java
  • 51Nod

    现在有两个长度为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
  • 相关阅读:
    Abp 领域事件简单实践 <一>
    Abp session和Cookie
    Abp 聚合测试
    反向代理
    Angular 变更检测
    VS 之github
    Docker 启动SQLServer
    查出第二大的数是多少
    DDD 理解
    ActionBar的简单应用
  • 原文地址:https://www.cnblogs.com/dulute/p/7966718.html
Copyright © 2011-2022 走看看