逆序对
用树状数组求逆序对
struct BIT
{
int c[N];
BIT(){ memset(c, 0, sizeof(c)); }
void add(int pos, int val)
{
while(pos <= n) c[pos] += val, pos += (pos & -pos);
}
int query(int k)
{
int ans = 0;
while(k) ans += c[k], k -= (k & -k);
return ans;
}
}T;
逆序对奇偶性
相邻交换:改变奇偶性。
任意对换:改变奇偶性。
轮换(长度为 k 的轮换):
一个
k-轮换可以分解为 k−1 次对换
所以当 k 是偶数时,k−1 是奇数 → 改变奇偶性。
浙公网安备 33010602011771号