zoukankan      html  css  js  c++  java
  • ACM求经过k次移动后所得的逆序数

    Description

    bobo has a sequence a 1,a 2,…,a n. He is allowed to swap two adjacent numbers for no more than k times. 

    Find the minimum number of inversions after his swaps. 

    Note: The number of inversions is the number of pair (i,j) where 1≤i<j≤n and a i>a j.
     

    Input

    The input consists of several tests. For each tests: 

    The first line contains 2 integers n,k (1≤n≤10 5,0≤k≤10 9). The second line contains n integers a 1,a 2,…,a n (0≤a i≤10 9).
     

    Output

    For each tests: 

    A single integer denotes the minimum number of inversions.
     

    Sample Input

    3 1
    2 2 1
    3 0
    2 2 1
     

    Sample Output

    1
    2
     
    解题思路:
    题目大意是输入一组数据通过k次相邻位置的移动后,求 他所得的最小的逆序数。我们通过归并的方法求出这一组数据的逆序数,然后将这个逆序数减去所要移动的次数就得到了我们要求的最小的逆序数。
    程序代码:
    #include <iostream>
    using namespace std;
    int n;
    long long s;
    long long a[100005],t[100005];
    void fun(long long *a,int x,int y,long long*t)
    {
        if(y-x>1)
        {
            int m=x+(y-x)/2;
            int p=x,q=m,i=x;
            fun(a,x,m,t);
            fun(a,m,y,t);
            while(p<m||q<y)
            {
                if(q>=y||(a[p]<=a[q]&&p<m))
                    t[i++]=a[p++];
                else
                {
                    t[i++]=a[q++];
                    s=s+m-p;
                }
            }
            for( i=x;i<y;i++)
                a[i]=t[i];
        }
    }
    int main()
    {
        long long k;
        while(cin>>n>>k)
        {
            s=0;
            for(int i=0;i<n;i++)
                cin>>a[i];
            fun(a,0,n,t);
            if(s-k<=0)
                cout<<"0"<<endl;
            else
                cout<<s-k<<endl;
        }
        return 0;
    }
  • 相关阅读:
    MRC与ARC两种模式的相互兼容
    解决获取的手机序列号卸载应用重新安装时序列号变动的问题
    屏幕截图
    图片右下角显示水印
    在一个工程中建两个端口(司机端和货主端)
    左右侧边栏抽屉效果
    第二阶段第一天站立会议总结
    第十天站立会议总结
    第九天站立会议总结
    第八天站立会议总结
  • 原文地址:https://www.cnblogs.com/xinxiangqing/p/4713270.html
Copyright © 2011-2022 走看看