zoukankan      html  css  js  c++  java
  • 求逆序对

    题目描述 Description

    给定一个序列a1,a2,…,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数 

    数据范围:N<=105Ai<=105。时间限制为1s

    输入描述 Input Description

    第一行为n,表示序列长度,接下来的n行,第i+1行表示序列中的第i个数。

    输出描述 Output Description

    所有逆序对总数.

    样例输入 Sample Input

    4

    3

    2

    3

    2

    样例输出 Sample Output

    3

    代码:

    #include<iostream>

    #include<cstdlib>

    using namespace std;

    int a[100011],zh[100011];

    unsigned long long k;

    void mergesoft(int left,int right)         

    {

         if(left==right) return;

         int mid=(left+right)/2;

         mergesoft(left,mid);mergesoft(mid+1,right);      

         int p=left,q=left,j=mid+1;

         while(p<=mid && j<=right)

         {

              if(a[p]>a[j])

              {k=k+mid-p+1;zh[q++]=a[j++];}   

              else

               zh[q++]=a[p++];

         }

         while(p<=mid) zh[q++]=a[p++];

         while(j<=right) zh[q++]=a[j++];

         for(int i=left;i<=right;i++) a[i]=zh[i];

    }

    int main()

    {

        int n;cin>>n;

        for(int i=1;i<=n;i++) cin>>a[i];

        mergesoft(1,n);

        cout<<k;

        return 0;

    }

     

  • 相关阅读:
    linux创建用户
    Java理解笔记------杂项
    java高效并发
    GPG备份秘钥
    (二)数据同步利器syncthing
    (一)安装samba
    (序)利旧打造私有云
    mysql的docker化安装
    (八)netty的SSL renegotiation攻击漏洞
    (七)json序列化
  • 原文地址:https://www.cnblogs.com/suishiguang/p/5745982.html
Copyright © 2011-2022 走看看