题目链接
解题思路
代码
#include <iostream>
using namespace std;
const int N=2005;
int a[N][N];
void insert(int x1,int y1,int x2,int y2){
a[x1][y1]++;
a[x1][y2+1]--;
a[x2+1][y1]--;
a[x2+1][y2+1]++;
}
int main()
{
int n,m;
cin>>n>>m;
while(m--){
int x1,x2,y1,y2;
cin>>x1>>y1>>x2>>y2;
insert(x1,y1,x2,y2);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
a[i][j]+=a[i-1][j]+a[i][j-1]-a[i-1][j-1];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
//如果操作数是奇数,棋子是黑色,偶数,棋子是白色
if(a[i][j]%2==0) cout<<"0";
else cout<<"1";
}
cout<<endl;
}
return 0;
}
日期
2024/1/16
本文介绍了如何使用C++编程语言解决AcWing题库中的一道题目,通过动态规划计算在给定棋盘上执行一系列插入操作后,黑白棋子的数量分布。代码实现了数组更新和最终计数。

被折叠的 条评论
为什么被折叠?



