• 求逆序对


    题目描述 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;

    }

     

  • 相关阅读:
    shell与export命令
    mysql同步出现1062错误
    mysql命令行执行时不输出列名(字段名)
    python中中括号中的负数
    bash: ssh: command not found
    nagios的一些东西
    安装MySQLdb出现HAVE_WCSCOLL重定义问题的解决方法
    ImportError: No module named setuptools
    xp密钥
    破解MySQL和修改mysql的密码
  • 原文地址:https://www.cnblogs.com/suishiguang/p/5745982.html
Copyright © 2020-2023  润新知