逆序对

用树状数组求逆序对

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 是奇数 → 改变奇偶性。

posted on 2025-10-09 11:19  下头小美  阅读(6)  评论(0)    收藏  举报