注释还乱码了啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
```cpp
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
#define ll long long
const int Maxn=1e5+10;
int tree[Maxn<<2],lazy[Maxn<<2];
int x,y;
int a;
int ans;
void pushDown(int l,int r,int p)
{
int mid=(l+r)>>1,le=p<<1,ri=p<<1|1;
tree[le]+=lazy[p]*(mid-l+1);
lazy[le]+=lazy[p];
tree[ri]+=lazy[p]*(r-mid);
lazy[ri]+=lazy[p];
lazy[p]=0;
}
void build(int l,int r,int p)
{
if(l==r)
{
tree[p]=0;
return ;
}
ll mid=(l+r)>>1,le=p<<1,ri=p<<1|1;
build(l,mid,le);
build(mid+1,r,ri);
tree[p]=tree[le]+tree[ri];
}
void update(int l,int r,int p)
{
if(x<=l&&r<=y)
{
tree[p]+=(r-l+1);
lazy[p]++;
return ;
}
pushDown(l,r,p);
ll mid=(l+r)>>1,le=p<<1,ri=p<<1|1;
if(x<=mid) update(l,mid,le);
if(y>mid) update(mid+1,r,ri);
tree[p]=tree[le]+tree[ri];
}
ll query(int l,int r,int p)
{
if(l==r) return tree[p]&=1;
pushDown(l,r,p);
ll mid=(l+r)>>1,le=p<<1,ri=p<<1|1;
if(x<=mid) return query(l,mid,le);
return query(mid+1,r,ri);
}
int main()
{
int n,m;cin>>n>>m;
//init
build(1,n,1);
//建树
while(m--)
{
int t;cin>>t;
if(t==1)
{
cin>>x>>y;
update(1,n,1);
}
if(t==2)
{
cin>>a;
cout<<query(1,n,1)<<endl;
}
}
//处理
return 0;
}
/*
in1:
20 10
1 1 10
2 6
2 12
1 5 12
2 6
2 15
1 6 16
1 11 17
2 12
2 6
out1:
1
0
0
0
1
1
*/
by dtrthg @ 2022-08-20 15:25:22
@[dtrthg](/user/379113) ```query```函数里面:
```cpp
if(x<=mid) return query(l,mid,le);
return query(mid+1,r,ri);
```
应该改为:
```
if(a<=mid) return query(l,mid,le);
return query(mid+1,r,ri);
```
by _Vix_ @ 2022-08-20 15:49:09
@[Zheng07](/user/482965) 谢谢大佬!谢谢ヽ(✿゚▽゚)ノ
by dtrthg @ 2022-08-20 16:00:07
@[dtrthg](/user/379113) %%
by CmathFrog @ 2022-08-21 17:05:19
@[dtrthg](/user/379113) 小猫给树浇水??
by CmathFrog @ 2022-08-21 17:06:00
@[pqpq](/user/769482) 对哇,线段树经验好多(doge)
by dtrthg @ 2022-08-21 18:34:56
> %%
不至于不至于
by dtrthg @ 2022-08-21 18:35:33
@[dtrthg](/user/379113) 小猫
by CmathFrog @ 2022-08-21 20:27:14