AcWing 5396. 棋盘
原题链接
简单
#include<iostream>
using namespace std;
const int N=2010;
int b[N][N],sum[N][N];//b是差分数组,sum是棋盘
int n,m,x1,x2,y1,y2;
int main()
{
scanf("%d%d",&n,&m);
while(m--)
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
++b[x1][y1];
--b[x2+1][y1];
--b[x1][y2+1];
++b[x2+1][y2+1];
}
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+b[i][j];
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
if(sum[i][j]%2==0) printf("0");
else printf("1");
}
puts("");
}
return 0;
}