1 条题解

  • 0
    @ 2026-10-25 15:22:53

    思路

    十万规模逆序统计,答案可超32位,需要nlogn路线。

    参考程序(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    vector<int>a,b;long long solve(int l,int r){if(r-l<=1)return 0;int m=(l+r)/2;long long ans=solve(l,m)+solve(m,r);int i=l,j=m,k=l;while(i<m&&j<r){if(a[i]<=a[j])b[k++]=a[i++];else{ans+=m-i;b[k++]=a[j++];}}while(i<m)b[k++]=a[i++];while(j<r)b[k++]=a[j++];for(i=l;i<r;i++)a[i]=b[i];return ans;}int main(){int n;cin>>n;a.resize(n);b.resize(n);for(int &x:a)cin>>x;cout<<solve(0,n)<<'\n';}
    
    • 1

    信息

    ID
    1140
    时间
    1000ms
    内存
    64MiB
    难度
    普及
    标签
    递交数
    1
    已通过
    1
    上传者