标签:-- 证明 ref 兔子 逆序数 数字 print else 变化
??由于题目中的数都是互不相同的,所以每交换一对数字,序列的逆序数的奇偶性就会改变一次(可以证明序列的奇偶性变化只与交换的这对数的大小关系有关)。
int arr[maxn], tmp[maxn], n, m; ll cnt;
void merge(int l, int r) {
if (l>=r) return;
int mid = (l+r)>>1;
merge(l, mid);
merge(mid+1, r);
int l1 = l, l2 = mid+1, tot = l;
while(l1<=mid || l2<=r) {
if (l2>r || (l1<=mid && arr[l1]<=arr[l2])) tmp[tot++] = arr[l1++];
else {
cnt += mid-l1+1;
tmp[tot++] = arr[l2++];
}
}
for (int i = l; i<=r; ++i) arr[i] = tmp[i];
}
int main() {
cin >> n;
for (int i = 1; i<=n; ++i) scanf("%d", &arr[i]);
merge(1, n);
int m; cin >> m;
cnt = cnt&1;
while(m--) {
int l, r; scanf("%d%d", &l, &r);
if (((r-l+1)/2)&1) cnt ^= 1;
printf("%s\n", cnt&1 ? "dislike":"like");
}
return 0;
}
标签:-- 证明 ref 兔子 逆序数 数字 print else 变化
原文地址:https://www.cnblogs.com/shuitiangong/p/14176676.html