本文主要是介绍poj 1195 Mobile phones(树状数组二维),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这是道模版题,直接套模版就好了。。。。
注意:我用的树状数组下标是从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));
}
}
}
这篇关于poj 1195 Mobile phones(树状数组二维)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!