当前位置: 首页 > news >正文

蓝桥杯2023年第十四届省赛真题----棋盘

题目描述

小蓝拥有 n × n 大小的棋盘,一开始棋盘上全都是白子。小蓝进行了 m 次操作,每次操作会将棋盘上某个范围内的所有棋子的颜色取反 (也就是白色棋子变为黑色,黑色棋子变为白色)。请输出所有操作做完后棋盘上每个棋子的颜色。

输入格式

输入的第一行包含两个整数 n, m,用一个空格分隔,表示棋盘大小与操作数。

接下来 m 行每行包含四个整数 x1, y1, x2, y2,相邻整数之间使用一个空格分隔,表示将在 x1 至 x2 行和 y1 至 y2 列中的棋子颜色取反。

输出格式

输出 n 行,每行 n 个 0 或 1 表示该位置棋子的颜色。如果是白色则输出 0,否则输出 1 。

样例输入

3 3
1 1 2 2
2 2 3 3
1 1 3 3

样例输出

001
010
100

提示

对于 30% 的评测用例,n m ≤ 500 ;

对于所有评测用例,1 ≤ n, m ≤ 2000 ,1 ≤ x1 ≤ x2 ≤ n ,1 ≤ y1 ≤ y2 ≤ m 。


题目解析:

本人 刚做这个题,一开始知道是板子题,但是感觉有点别扭和懵逼,这个题暴力会tle,根据题目给的给的每次都会翻转,我们就可以看成是一个加1 和 减1 的操作,然后这个时候就对上差分的作用了,然后再求前缀和(求出原数组),即可拿捏这个题。


AC代码:

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>using namespace std;const int N = 2200;
int a[N][N];
int n,m;void insert(int x1,int y1,int x2,int y2,int c)
{a[x1][y1] = a[x1][y1] + c;a[x1][y2+1] -= c;a[x2+1][y1] -= c;a[x2+1][y2+1] += c;
}int main()
{scanf("%d %d",&n,&m);while (m -- ){int x1,y1,x2,y2;scanf("%d %d %d %d",&x1,&y1,&x2,&y2);insert(x1,y1,x2,y2,1);}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){a[i][j] = a[i][j] + a[i-1][j] + a[i][j-1] - a[i-1][j-1];//这里最好别%2,本人在%2要是有负数情况,很难受,&1有负数就不会影响cout << (a[i][j]&1);}puts("");}return 0;
}

相关文章:

  • 将xyz格式的GRACE数据转成geotiff格式
  • 用HTML5实现灯笼效果
  • chisel RegInit/UInt/U
  • 测试管理_利用python连接禅道数据库并自动统计bug数据到钉钉群
  • Rust 初体验2
  • 最小生成树——Prim/Kruskal Python
  • Windows 安装 MySQL 最新最简教程
  • 使用Linux docker方式快速安装Plik并结合内网穿透实现公网访问
  • 百卓Smart管理平台 uploadfile.php 文件上传漏洞(CVE-2024-0939)
  • -转换流-
  • 08-Java过滤器模式 ( Filter Pattern )
  • QT设置qss
  • 11 插入排序和希尔排序
  • 《Docker极简教程》--Docker环境的搭建--在Mac上搭建Docker环境
  • C语言使⽤ scanf()函数应注意的问题是什么?
  • Angular Elements 及其运作原理
  • express.js的介绍及使用
  • javascript 哈希表
  • JavaScript标准库系列——Math对象和Date对象(二)
  • jdbc就是这么简单
  • JDK 6和JDK 7中的substring()方法
  • ng6--错误信息小结(持续更新)
  • npx命令介绍
  • Python实现BT种子转化为磁力链接【实战】
  • React 快速上手 - 07 前端路由 react-router
  • yii2中session跨域名的问题
  • 初识 beanstalkd
  • 搭建gitbook 和 访问权限认证
  • 服务器之间,相同帐号,实现免密钥登录
  • 关于Flux,Vuex,Redux的思考
  • 机器学习学习笔记一
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 近期前端发展计划
  • 前端知识点整理(待续)
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​决定德拉瓦州地区版图的关键历史事件
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • $jQuery 重写Alert样式方法
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (一)SpringBoot3---尚硅谷总结
  • (一)插入排序
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)Unity3DUnity3D在android下调试
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET Core 版本不支持的问题
  • .NET 反射 Reflect
  • .NET 设计一套高性能的弱事件机制
  • .NET 依赖注入和配置系统