你给的程序大体是对的,但是有以下错误
a[i]数组没用定义但用了
操作数是一开始输入而不是中间输入
然后就没什么问题了
```c
#include <iostream>
#include <algorithm>
#include<cstdio>
using namespace std;
#define ll long long
int readin(){
int f=1,x=0;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int c[500001];
int n;
int lowbit(int x){return (x&(-x));}
int update(int x,int add){
while(x<=n){
c[x]+=add;
x+=lowbit(x);
}
}
int sum(int x){
int s=0;
while(x>0){
s+=c[x];
x-=lowbit(x);
}
return s;
}
int main()
{
int m,x,y,flag;
n=readin();
m=readin();
for(int i=1;i<=n;i++){
x=readin();
update(i,x);
}
while(m--){
flag=readin();
if(flag==1){
x=readin(),y=readin();
update(x,y);
//a[x]=y;
}
else {
x=readin(),y=readin();
printf("%d\n",sum(y)-sum(x-1));
}
}
return 0;
}
```
这是我在你的基础上修改的AC代码
by ztzshiwo001219 @ 2017-06-19 14:10:11
@[ztzshiwo001219](/space/show?uid=8462) 啊!感激不尽,我太不小心了。谢谢大佬
by Amphetamine @ 2017-06-24 16:18:52
@[Amphetamine](/space/show?uid=39986) 你好像很多程序都发讨论求查错啊... ... 有时候自己代码查错对自己的提高大一些
by ztzshiwo001219 @ 2017-06-25 18:57:48