!

来源:互联网 发布:不用网络最好玩的游戏 编辑:程序博客网 时间:2024/06/16 16:27

!

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

给出一个n*n的矩阵,矩阵中只有0和1,现在有两种操作:
1 x y 将第x行第y列的数字改变(0变1,1变0)
2 x1 y1 x2 y2求由左上角(x1,y1)到右下角(x2,y2)组成的矩形中的1的个数。
现在初始的矩阵全是0,之后有一系列操作。保证数据输入合法。

输入

 第一行输入一个正整数T,代表测试组数。(T <= 10)
每组测试数据的第一行有两个数n,m。(1 <= n <= 500 , 1 <= m <= 10000)
之后是连续m行,代表m次操作。(1 <= x1,y1 <= x2,y2 <= n)

输出

 对每次询问输出(x1,y1)到(x2,y2)矩形内的1的个数

示例输入

13 31 2 21 1 12 1 1 3 3

示例输出

2

提示

 

来源

windream

示例程序

 
#include<stdio.h>  #include<string.h>  int a[600][600];  int main()  {      int i,j,n,m,k,t,x,y,x1,x2,y1,y2,l1,l2,b;      scanf("%d",&t);      while(t--)      {          memset(a,0,sizeof(a));          scanf("%d %d",&n,&m);          for(i=1;i<=m;i++)          {              scanf("%d",&k);              if(k==1)              {                  scanf("%d %d",&x,&y);                  if(a[x][y])                      a[x][y]=0;                  else                      a[x][y]=1;              }              if(k==2)              {                  b=0;                  scanf("%d %d %d %d",&x1,&y1,&x2,&y2);                  for(l1=x1;l1<=x2;l1++)                      for(l2=y1;l2<=y2;l2++)                          if(a[l1][l2])                              b++;                          printf("%d\n",b);              }          }      }  } 

0 0