poj2155二維樹狀陣列區間更新
阿新 • • 發佈:2018-12-07
垃圾poj又交不上題了,也不知道自己寫的對不對
/* 給定一個矩陣,初始化為0:兩種操作 第一種把一塊子矩陣裡的值翻轉:0->1,1->0 第二種詢問某個單元的值 直接累計單元格被覆蓋的次數,如果被覆蓋奇數次就是1,被覆蓋偶數次就是0 樹狀陣列解區間更新。。 */ #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; #define maxn 1005 int bit[maxn][maxn],n,q; voidadd(int x,int y,int num){ for(int i=x;i<=n;i+=i&-i) for(int j=y;j<=n;j+=j&-j) bit[i][j]+=num; } int query(int x,int y){ int res=0; for(int i=x;i;i-=i&-i) for(int j=y;j;j-=j&-j) res+=bit[i][j]; return res; } int main(){int t,x1,x2,y1,y2; char op[2]; scanf("%d",&t); while(t--){ scanf("%d%d",&n,&q); while(q--){ scanf("%s",&op); if(op[0]=='C'){ scanf("%d%d%d%d",&x1,&y1,&x2,&y2); add(x1,y1,1);add(x1,y2+1,1); add(x2+1,y1,1);add(x2+1,y2+1,1); } else { scanf("%d%d",&x1,&y1); printf("%d\n",query(x1,y1)%2); } } printf("\n"); } }