您的位置:首页 > 其它

!

2015-11-24 23:03 239 查看

!


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的个数

示例输入

1
3 3
1 2 2
1 1 1
2 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);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: