luogu 3374
树状数组的模板。
#include"cstdio" #include"cctype" int lowbit(int x) { return x&(-x); } int read() { int c,x=0,s=1; while(!isdigit(c=getchar())) if(c=='-') s=-1; while(x=x*10+c-'0',isdigit(c=getchar())); return x*s; } int tree[500001]; void add(int w,int v,int n) { for(; w<=n; w+=lowbit(w)) tree[w]+=v; } int query(int w) { int res=0; for(; w; w-=lowbit(w)) res+=tree[w]; return res; } int main() { int n=read(),m=read(); for(int i=1; i<=n; i++) add(i,read(),n); while(m--) { int t=read(); if(t==1) { int w=read(),v=read(); add(w,v,n); } else { int l=read(),r=read(); printf("%d\n",query(r)-query(l-1)); } } return 0; }