这道我没什么想说的,看解题报告的
//4456K
485MS
#include <stdio.h>
#include <string.h>
#define lowbit(x) (x&(-x))
#define M 1050
int ar[M][M];
int n;
void updata (int i,int j)
{
int tmp;
while (i > 0)
{
tmp = j;
while (tmp > 0)
{
ar[i][tmp] ^= 1;
tmp -= lowbit(tmp);
}
i -= lowbit(i);
}
}
int query (int i,int j)
{
int ans = 0;
int tmp;
while (i <= n)
{
tmp = j;
while (tmp <= n)
{
ans ^= ar[i][tmp];
tmp += lowbit(tmp);
}
i += lowbit(i);
}
return ans;
}
int main ()
{
int t,m,x1,y1,x2,y2;
char op;
scanf ("%d",&t);
while (t --)
{
memset (ar,0,sizeof(ar));
scanf ("%d%d",&n,&m);
while (m --)
{
getchar ();
scanf("%c",&op);
if (op == 'C')
{
scanf ("%d%d%d%d",&x1,&y1,&x2,&y2);
updata (x2,y2);
updata (x1-1,y2);
updata (x2,y1-1);
updata (x1-1,y1 -1);
}
else
{
scanf ("%d%d",&x1,&y1);
printf ("%d\n",query(x1,y1));
}
}
printf ("\n");
}
return 0;
}
//4456K
#include <stdio.h>
#include <string.h>
#define lowbit(x) (x&(-x))
#define M 1050
int ar[M][M];
int n;
void updata (int i,int j)
{
}
int query (int i,int j)
{
}
int main ()
{
}