蓝桥集训之棋盘
-
核心思想:差分+二进制
- 因为最终输出的棋盘为01组成
- k&1 –> 奇1偶0 所以每次差分时元素++ 最中&1输出即可
-
#include<iostream>#include<cstring>using namespace std;const int N = 2010;int b[N][N];int n,m;int main(){cin>>n>>m;while(m--){int x1, y1, x2, y2;scanf("%d%d%d%d", &x1, &y1, &x2, &y2);//差分b[x1][y1] ++;b[x1][y2+1] --;b[x2+1][y1] --;b[x2+1][y2+1] ++;}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){b[i][j] += b[i-1][j] + b[i][j-1] - b[i-1][j-1];printf("%d", b[i][j] &1);}puts("");}}