1 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int N = 5e5+10; int c[N]; int n,m; int lowbit(int i) { return i & -i; } void update(int i,int val) { while(i<=n) { c[i]+=val; i+=lowbit(i); } } int sum(int i) { int res = 0; while(i>0) { res+=c[i]; i-=lowbit(i); } return res; } int main() { cin >> n >> m; while(m--) { int op,x,y; cin >> op; if(op == 1) { cin >> x >> y; //区间加1 update(x,1); update(y+1,1); } else { cin >> x; //如何把区间和变成0或者1?取余是一个十分巧妙的方法 cout << sum(x)%2 << endl; } } return 0; }
- 1
信息
- ID
- 596
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 5
- 标签
- 递交数
- 21
- 已通过
- 12
- 上传者