题解 P5057 【[CQOI2006]简单题】
简单题,果然很简单。
考虑差分序列(用异或代替减法),则每个元素的真实值是差分序列的异或前缀和,修改的时候只需要改
用树状数组维护。
#include <cstdio>
int N, M, B[100001];
inline void A(int i) { for (; i <= N; i += i & -i) B[i] ^= 1; }
inline int Q(int i) { int A = 0; for (; i; i -= i & -i) A ^= B[i]; return A; }
int main() {
scanf("%d%d", &N, &M);
while (M--) {
int opt, l, r;
scanf("%d%d", &opt, &l);
if (opt == 1) A(l), scanf("%d", &r), A(r + 1);
else printf("%d\n", Q(l));
}
return 0;
}