poj 2155 Matrix

 1 #include<cstdio>
 2 #include<cstring>
 3 const int maxn=1000+5;
 4 int n,m;
 5 int s[maxn][maxn];
 6 int lowbit(int x)
 7 {
 8     return x&-x;
 9 }
10 int sum(int x,int y)
11 {
12     int ret=0;
13     for(int i=x;i>0;i-=lowbit(i))
14         for(int j=y;j>0;j-=lowbit(j))
15           ret+=s[i][j];
16     return ret;
17 }
18 void add(int x,int y,int inc)
19 {
20     for(int i=x;i<=n;i+=lowbit(i))
21         for(int j=y;j<=n;j+=lowbit(j))
22          s[i][j]+=inc;
23 }
24 int main()
25 {
26     int t;
27     scanf("%d",&t);
28     while(t--)
29     {
30         memset(s,0,sizeof(s));
31         scanf("%d%d",&n,&m);
32         char com[5];
33         int x1,y1,x2,y2;
34         for(int i=0;i<m;i++)
35         {
36             scanf("%s",com);
37             if(com[0]=='C')
38             {
39                 scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
40                 add(x1,y1,1);
41                 add(x2+1,y2+1,1);
42                 add(x1,y2+1,-1);
43                 add(x2+1,y1,-1);
44             }
45             else
46             {
47                 int x,y;
48                 scanf("%d%d",&x,&y);
49                 int ans=sum(x,y);
50                 printf("%d
",ans%2);
51             }
52         }
53         if(t)
54             printf("
");
55     }
56     return 0;
57 }
原文地址:https://www.cnblogs.com/sooflow/p/3263078.html