poj 1195

来源:互联网 发布:软件著作权代码格式 编辑:程序博客网 时间:2024/06/07 02:29

二维的数状数组

代码如下

#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int maxn=1050;int c[maxn][maxn];int s;int lowbit(int x){return x&-x;}int sum(int x,int y){int ret=0;for(int i=x;i>0;i-=lowbit(i))for(int j=y;j>0;j-=lowbit(j))ret+=c[i][j];return ret;}void add(int x,int y,int d){for(int i=x;i<=s;i+=lowbit(i))for(int j=y;j<=s;j+=lowbit(j))c[i][j]+=d;}int main(){int n;memset(c,0,sizeof(c));while(~scanf("%d",&n)){if(n==3) break;if(n==0) {scanf("%d",&s); }if(n==1){int x,y,a;scanf("%d%d%d",&x,&y,&a);add(x+1,y+1,a); //for(int i=1;i<=4;i++){//for(int j=1;j<=4;j++)//printf("%d ",c[i][j]);//printf("\n");//}}if(n==2){int l,b,r,t;scanf("%d%d%d%d",&l,&b,&r,&t);printf("%d\n",sum(r+1,t+1)-sum(l,t+1)-sum(r+1,b)+sum(l,b));}} } 


原创粉丝点击