看了大牛的博客才有思路的,,太撮了..
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> #include <cmath> #include <stack> #include <map> #include <string> #define LL long long #define DB double #define SF scanf #define PF printf #define N 1009 using namespace std; int C[N][N]; int inline low(int k){return k&(-k);} void update(int x,int y,int d) { for(int i=x;i<N;i+=low(i)) { for(int j=y;j<N;j+=low(j)) { C[i][j] += d; } } } int sum(int x,int y) { int ret =0 ; for(int i=x;i>0;i-=low(i)) { for(int j=y;j>0;j-=low(j)) { ret+=C[i][j]; } }return ret; } int main() { #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #endif int cas,T=1;SF("%d",&cas); int n,m; int a,b,c,d;char ch[3]; while(cas--) { if(T>1) puts(""); T++; SF("%d%d",&n,&m); memset(C,0,sizeof(C)); while(m--) { SF("%s",ch); if(ch[0]=='C') { SF("%d%d%d%d",&a,&b,&c,&d);c++;d++; update(a,b,1); update(a,d,-1); update(c,b,-1); update(c,d,1); }else { SF("%d%d",&a,&b); int t = sum(a,b); PF("%d\n",t&1); } } } return 0; }