逆序对就是如果i > j && a[i] < a[j],这两个就算一对逆序对,简单来说,所有逆序对的个数和就是找每一个数的前面有几个比他的大的数,他们加起来的和就是逆序对的总数
树状数组求逆序数
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int b[N];
int a[N];
int n;
int lowbit(int x)
{
return x&(-x);
}
int sum(int x)
{
int ans=0;
for(int i=x;i>0;i-=lowbit(i)){
ans+=b[i];
}
return ans;
}
void update(int x,int y)
{
for(int i=x;i<=n;i+=lowbit(i)){
b[i]+=y;
}
}
int main()
{
int n,q;
while(scanf("%d %d"))
return 0;
}

1026

被折叠的 条评论
为什么被折叠?



