树状数组 $O(nlog(n))$
树状数组基本题, 区间更新,点查询。
维护一个前缀和数组,关于反转,在点查询的时候,如果其前缀和mod2为0, 则结果为0; 否则为1;
时间复杂度
C++ 代码
#include<iostream>
using namespace std;
const int N=100010;
int n, c[N];
void add(int i, int val){
while(i<=n){
c[i] += val;
i += i&-i;
}
}
int ask(int i){
int sum = 0;
while(i>=1){
sum += c[i];
i -= i&-i;
}
return sum;
}
int main(){
int m, t, l, r;
cin>>n>>m;
while(m--){
cin>>t;
if(t==1){
cin>>l>>r;
add(l, 1);
add(r+1, -1);
}else{
cin>>l;
if(ask(l)%2==0) cout<<0;
else cout<<1;
cout<<endl;
}
}
}