直接用sort,有那么简单吗?Rt我全WA

P1908 逆序对

caojiaming @ 2023-01-30 15:33:46

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n;
int a[(int)1000000];
int cnt;
bool cmp(int x,int y)
{
    if(x>y)
    {
        cnt++;
        return true;
    }
    else return false;
}
signed main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        scanf("%lld",&a[i]);
    }
    sort(a+1,a+n+1,cmp);
    cout<<cnt<<"\n";
    return 0;
}

这样本以为可以O(n log n)来过,但是全WA

为什么?


by rui_er @ 2023-01-30 15:36:26

6,sort 显然不是两两比较啊……


by __er @ 2023-01-30 15:37:26

@caojiaming 树状数组就得了


by Caiest_Oier @ 2023-01-30 15:43:21

6,sort做法不是让你这么搞的


by lmz_ @ 2023-01-30 15:48:10

你要想嘛。如果你要求逆序对,是不是要把所有的 n\times (n - 1) 个数对全部比较一遍?但是 sort 是快速排序,只会进行 n \times \log n 次比较操作,自然就 WA 了嘛。


by Fasterfaster @ 2023-02-02 20:17:31

用归并计算也不是不可以,L


|