hdu-See you~(二维树状数组)

来源:互联网 发布:淘宝广告自己跳出来 编辑:程序博客网 时间:2024/05/16 06:38


#include<stdio.h>#include<string.h>#include<stdlib.h>#include<iostream>#include<algorithm>using namespace std;int map[1005][1005],map1[1005][1005];;int lowbit(int x){    return x&(-x);}void add(int x,int y,int num){    for(int i = x; i <=1001; i+=lowbit(i))        for(int j = y; j <= 1001; j+=lowbit(j))            map[i][j] += num;}int getsum(int x,int y){    int res = 0;    for(int i = x; i > 0; i -= lowbit(i))        for(int j = y; j > 0; j -= lowbit(j))            res += map[i][j];    return res;}int main(){    int A = 1001;    int t,n,Case = 1;    scanf("%d",&t);    while(t--)    {        printf("Case %d:\n",Case++);        memset(map,0,sizeof(map));        for(int i=1; i<=A; i++)            for(int j=1; j<=A; j++)            {                add(i,j,1);                map1[i][j]=1;            }        cin>>n;        int x1,x2,y1,y2,w;        while(n--)        {            char op;            cin>>op;            if(op=='A')            {                scanf("%d%d%d",&x1,&y1,&w);                x1++,y1++;                add(x1,y1,w);                map1[x1][y1]+=w;            }            else if(op=='D')            {                scanf("%d%d%d",&x1,&y1,&w);                x1++,y1++;                if(map1[x1][y1]<w)w=map1[x1][y1];                add(x1,y1,-w);                map1[x1][y1]-=w;            }            else if(op=='M')            {                scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&w);                x1++,y1++,x2++,y2++;                if(map1[x1][y1]<w)w=map1[x1][y1];                add(x1,y1,-w);                map1[x1][y1]-=w;                add(x2,y2,w);                map1[x2][y2]+=w;            }            else if(op=='S')            {                scanf("%d%d%d%d",&x1,&y1,&x2,&y2);                x1++,y1++,x2++,y2++;                if(x1>x2)swap(x1,x2);                if(y1>y2)swap(y1,y2);                int sum=getsum(x2,y2)-getsum(x2,y1-1)-getsum(x1-1,y2)+getsum(x1-1,y1-1);                printf("%d\n",sum);            }        }    }}


0 0
原创粉丝点击