1908-逆序对(归并板子)

Posted darlingroot

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1908-逆序对(归并板子)相关的知识,希望对你有一定的参考价值。

传送门

 

很早很早以前的题了

今天突然开心

就来补一片题解

主要还是写归并排序的

 

#include<cstdio>
#define ll long long 
using namespace std;

const int maxn=5e5+5;
int a[maxn],r[maxn],n;
ll ans=0;

void msort(int s,int t)
{
    if(s==t) 
        return;
    int mid=s+t>>1;
    msort(s,mid),msort(mid+1,t);
    int i=s,j=mid+1,k=s;
    while(i<=mid&&j<=t)
        if(a[i]<=a[j]) 
            r[k++]=a[i++];
        else 
            r[k++]=a[j++],ans+=(ll)mid-i+1;
    while(i<=mid) 
        r[k]=a[i],k++,i++;
    while(j<=t) 
        r[k]=a[j],k++,j++;
    for(int i=s;i<=t;i++) 
        a[i]=r[i];
}
inline int read()
{
    char ch=getchar();
    int sum=0,k=1;
    while(ch<0||ch>9)
    {
        if(ch==-) 
            k=-1;
        ch=getchar();
    }
    while(ch>=0&&ch<=9) 
        sum=sum*10+(ch^48),ch=getchar();
    return sum*k;
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) 
        a[i]=read();
    msort(1,n);
    printf("%lld
",ans);
    return 0;
}

 

以上是关于1908-逆序对(归并板子)的主要内容,如果未能解决你的问题,请参考以下文章

洛谷P1908 逆序对(归并排序)

洛谷P1908 求逆序对 [归并排序]

归并排序+归并排序求逆序对(例题P1908)

洛谷 P1908 逆序对 Label:归并排序||树状数组

P1908 逆序对-(cdq分治)

P1908 逆序对