模拟操作,用二维矩阵存储,修改的时候直接修改,查询的时候遍历矩形区域。
#include <bits/stdc++.h>
using namespace std;
int a[1010][1010];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
scanf("%d",&a[i][j]);
}
}
while(m--)
{
int obj;
scanf("%d",&obj);
{
if(obj==1)
{
int i,j;
scanf("%d%d",&i,&j);
a[i][j]=(a[i][j]==0);
}
else
{
int i1,j1,i2,j2;
scanf("%d%d%d%d",&i1,&j1,&i2,&j2);
int ans=0;
for(int i=i1;i<=i2;i++)
{
for(int j=j1;j<=j2;j++)
{
ans+=a[i][j];
}
}
printf("%d\n",ans);
}
}
}
}


京公网安备 11010502036488号