• 逆序数 归并


    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int a[1001],t[10001],ans;
    void Merge(int l,int m,int r)
    {
        int i=l,j=m+1;
        int pos=l;
        while(i<=m && j<=r)
        {
            if(a[i] > a[j])
            {
                t[pos++]=a[j++];
                ans+=m-i+1;
            }
            else t[pos++]=a[i++];
        }
        while(i<=m) t[pos++]=a[i++];
        while(j<=r) t[pos++]=a[j++];
        for(int z=l;z<=r;z++) a[z]=t[z];
    }
    void merge_sort(int l,int r)
    {
        if(l<r)
        {
            int m=(l+r)/2;
            merge_sort(l,m);
            merge_sort(m+1,r);
            Merge(l,m,r);
        }
    }
    int main()
    {
        int t;
        cin>>t;
        for(int Case=1;Case<=t;Case++)
        {
            int n;
            cin>>n;
            for(int i=1;i<=n;i++) cin>>a[i];
            ans=0;
            merge_sort(1,n);
            printf("Scenario #%d:
    ",Case);
            cout<<ans<<endl<<endl;
            //for(int i=1;i<=n;i++) cout<<a[i];
           // cout<<endl;
        }
        return 0;
    }

    http://poj.org/problem?id=1804

  • 相关阅读:
    16
    15
    14
    13
    12
    11
    10
    python包管理器修改镜像地址
    Linux环境下安装hadoop分布式集群+问题总结
    解剖css中的clear属性
  • 原文地址:https://www.cnblogs.com/z1141000271/p/6665032.html
Copyright © 2020-2023  润新知