关于本题数据范围

P1908 逆序对

035966_L3 @ 2022-06-03 17:37:44

下面这段 O(n \log^2 n) 代码不开 O2 TLE 0pts,开完 O2 直接 AC。所以数据应该减弱还是加强?

#include<bits/stdc++.h>
#define int long long
using namespace std;
queue<long long>q1,q2;
long long a[530012],tmp[530012];
int ms(int l,int r)
{
    if(r-l==1) return (a[l]>a[r]);
    long long ans=0;
    ans+=ms(l,(l+r)/2);
    ans+=ms((l+r)/2+1,r);
    for(int i=l;i<=r;i++)
        tmp[i]=a[i];
    sort(tmp+l,tmp+((l+r)/2+1));
    sort(tmp+((l+r)/2+1),tmp+r+1);
    for(int i=l;i<=(l+r)/2;i++)
        q1.push(tmp[i]);
    q1.push(2147483647);
    for(int i=(l+r)/2+1;i<=r;i++)
        q2.push(tmp[i]);
    q2.push(2147483647);
    for(int i=(l+r)/2+1;i<=r;i++)
    {
        while(q1.front()<=q2.front()) q1.pop();
        ans+=q1.size()-1;
        q2.pop();
    }
    while(!q1.empty()) q1.pop();
    while(!q2.empty()) q2.pop();
    return ans;
}
signed main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
        scanf("%lld",&a[i]);
    for(int i=n+1;i<=524288;i++)
        a[i]=2147483646;
    cout<<ms(1,524288);
    return 0;
}

by chlchl @ 2022-06-30 13:03:46

我归并可以 AC 啊……要不您检查一下您的代码常数?


|