这是道模版题,直接套模版就好了。。。。
注意:我用的树状数组下标是从1开始的,而题目给定是从0开始的,所以有时要+1
#include<stdio.h>
#define N 1100
int n;
int bit[N][N];
void add(int x,int y,int v)
{
int i,j;
for(i=x;i<=n;i+=i&-i)
for(j=y;j<=n;j+=j&-j)
bit[i][j]+=v;
}
int sum(int x,int y)
{
int res=0,i,j;
for(i=x;i>0;i-=i&-i)
for(j=y;j>0;j-=j&-j)
res+=bit[i][j];
return res;
}
int main(void)
{
int judge,c,x1,y1,x2,y2,i,j;
scanf("%d%d",&judge,&n);
while(~scanf("%d",&judge)&&judge!=3)
{
if(judge==1)
{
scanf("%d%d%d",&x1,&y1,&c);
add(x1+1,y1+1,c);
}
else
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
printf("%d\n",sum(x2+1,y2+1)-sum(x2+1,y1)-sum(x1,y2+1)+sum(x1,y1));
}
}
}