树状数组(一维&二维函数)
//一维 void add(int x,int p) { while(x<=n)t[x]+=p,x+=(x&(-x)); } int query(int x) { int ans=0; while(x)ans+=t[x],x-=(x&(-x)); return ans; } //二维 void add(int x,int y,int p) { for(int i=x;i<=n;i+=(i&(-i)) for(int j=y;j<=m;j+=(j&(-j)) t[i][j]+=p; } int query(int x,int y) { int ans=0; for(int i=x;i;i-=(i&(-i)) for(int j=y;j;j-=(j&(-j)) ans+=t[i][j]; return ans; }