二维树状数组
其实就是套娃。
一块一块维护。
int tr[MN];
void add(int x,int y,int v) {
for(int i=x; i<=n; i+=i&-i)
for(int j=y; j<=m; j+=j&-j)
tr[i][j]+=v;
}
int ask(int x,int y) {
int res=0;
for(int i=x; i; i-=i&-i)
for(int j=y; j; j-=j&-j)
res+=tr[i][j];
return res;
}