题解
区间修改+单点查询
对于一个点,查询的时候翻转的次数如果是奇数,是1,如果是偶数,是0
所以题目转变成对区间上的点加一,然后求单点的奇偶性
树状数组
对一串序列加1,相当于对其差分序列的 \([l]++,[r+1]--\)
code
#include<bits/stdc++.h>
using namespace std;
int a[100005]={0};
int main()
{
int n,m;
cin>>n>>m;
while(m--)
{
int op;
cin>>op;
if(op==1)
{
int x,y;
cin>>x>>y;
for(int i=x;i<=n;i+=(i & -i)) a[i]++;
for(int i=y+1;i<=n;i+=(i&-i)) a[i]--;
}
else
{
int x;
cin>>x;
int ans=0;
for(int i=x;i;i-=(i&-i))ans+=a[i];
if(ans&1)puts("1");
else puts("0");
}
}
return 0;
}
标签:puts,int,P5057,简单,cin,--,ans,CQOI2006,op
From: https://www.cnblogs.com/pure4knowledge/p/18024218