zoukankan      html  css  js  c++  java
  • Codeforces Round #324 (Div. 2) E

    这题贪心,考虑先放第一个,然后从第一个数在p中的位置, 不断的往前走,和在他后面的那些数组进行交换,因为这样交换可以提高最大的效率,就是说你花费了1但是使得两个点都朝他的木匾节点减少了1

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <vector>
    #include <cmath>
    using namespace std;
    const int maxn=2000005;
    int A[maxn],B[maxn],idx[maxn],D[maxn];
    pair<int,int>P[maxn];
    int main()
    {
       int N;
       while(scanf("%d",&N)==1)
       {
            for(int i=1; i<=N; i++)
            {
                scanf("%d",&B[i]);
                idx[B[i]]=i;
            }
           for(int i=1; i<=N; i++)
            {
                 scanf("%d",&D[i]);
                 A[D[i]]=i;
            }
            int cost=0,num=0;
            for(int i=1; i<=N; i++)
            {
                int d=D[i];
                if(d==B[i])continue;
                int Loc=idx[d];
                for(int i=idx[d]-1; i>0;i--)
                {
                     int d1=B[i];
                     if( idx[d] == A[d] )break;
                     if(A[d1]>=Loc){
                         cost+=abs(idx[d1]-idx[d]);
                         swap(idx[d1],idx[d]);
                         P[num++]=make_pair(idx[d1],idx[d]);
                         swap(B[i],B[Loc]);
                         Loc=i;
                     }
                }
            }
            printf("%d
    ",cost);
            printf("%d
    ",num);
            for(int i=0 ; i<num; i++)
                printf("%d %d
    ",P[i].first,P[i].second);
       }
        return 0;
    }
    View Code
  • 相关阅读:
    HTML5---offline application(application cache)
    apache asp.net
    长轮询
    comet ajax轮询
    bootstrap3
    weixin
    backbone csdn
    backbone case
    backbone showcase
    javascript performance
  • 原文地址:https://www.cnblogs.com/Opaser/p/4867412.html
Copyright © 2011-2022 走看看