#include <bits/stdc++.h>
using namespace std;
const int MAXN=2e5+1;
int n,m,op,li,ri,t[MAXN<<2],xx,a[MAXN];
char ch,c;
inline int read(){
xx=0,c=getchar();
while (c<'0'||c>'9') c=getchar();
while (c>='0'&&c<='9') xx=xx*10+c-'0',c=getchar();
return xx;
}
inline int lc(int i){
return i<<1;
}
inline int rc(int i){
return i<<1|1;
}
inline void update(int i){
t[i]=t[lc(i)]+t[rc(i)];
}
void build(int l,int r,int i){
if(l==r){
t[i]=a[l];
return;
}
int mid=(l+r)>>1;
build(l,mid, lc(i));
build(mid+1,r, rc(i));
update(i);
}
void change(int l,int r,int i,int x,int y){
if(l==r){
t[i]=1-t[i];
return;
}
int mid=(l+r)>>1;
if(x<=mid)change(l,mid, lc(i),x,y);
if(y>mid)change(mid+1,r, rc(i),x,y);
update(i);
}
int query(int l,int r,int i,int x,int y){
int ans=0;
if(l>=x&&r<=y){
return t[i];
}
int mid=(l+r)>>1;
if(x<=mid)ans+= query(l,mid, lc(i),x,y);
if(y>mid)ans+= query(mid+1,r,rc(i),x,y);
return ans;
}
int main(){
n=read(),m=read();
for(int i=1;i<=n;++i){
cin>>ch;//ch=getchar();
a[i]=ch-'0';
}
build(1,n,1);
for(int i=3;i<=m+2;++i){
op=read(),li=read(),ri=read();
if(op==0){
change(1,n,1,li,ri);
}else{
printf("%d\n", query(1,n,1,li,ri));
}
}
return 0;
}
这是一份60pts的代码 如果把里面的cin>>ch改成ch=getchar()就会爆零 但是本蒟蒻本地编译可以过样例和测试点,为什么提交不给过?