ICPC2020上海B - Mine Sweeper II
思维
[B-Mine Sweeper II_第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海)(重现赛)@hzy0227 (nowcoder.com)](https://codeforces.com/gym/103202/problem/I)
题意
在 \(n*m\;(1<=n,m<=1000)\) 的网格中扫雷,雷上没有数字,别的格子上的数字表示以它为中心的九宫格中的雷的个数
给出两个雷图A,B,"X"代表雷,"." 代表没有雷,每次操作可以将 B 中任意一个格子反转(雷变非雷,非雷变雷),求是否可以在 \(\lfloor\frac {n*m}2\rfloor\) 次操作内使 B 的各个格子的数字和 == A 的各个格子的数字和,并给出 B 最终的雷图
思路
思考数字的含义是什么,不完全是一个格子周围的雷的数量,因为如果当前格子是雷的话,他周围的雷对它就没有贡献了
数字的真正含义是相邻的(雷,非雷)对数,因此反转整个图后这个数是不变的
所以可以尝试把 B 直接变成 A,如果次数超了就把 B 变成 A 的反图
代码
#include<bits/stdc++.h>
typedef long long ll;
typedef std::pair<int, int> PII;
#define ALL(x) x.begin(),x.end()
#define pb push_back
#define fi first
#define se second
#define endl '\n'
using namespace std;
const int N = 1e3 + 10;
char a[N][N], b[N][N];
int n, m;
int main() {
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
cin >> n >> m;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> a[i][j];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> b[i][j];
int cnt = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
if (a[i][j] != b[i][j])
cnt++;
if (cnt > n * m / 2)
{
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
if (a[i][j] == 'X')
a[i][j] = '.';
else
a[i][j] = 'X';
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
cout << a[i][j];
cout << endl;
}
return 0;
}
ICPC2020上海B - Mine Sweeper II的更多相关文章
- poj 2612 Mine Sweeper
Mine Sweeper Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6429 Accepted: 2500 Desc ...
- 2020杭电多校 10C / HDU 6879 - Mine Sweeper (构造)
HDU 6879 - Mine Sweeper 题意 定义<扫雷>游戏的地图中每个空白格子的值为其周围八个格子内地雷的数量(即游戏内临近地雷数量的提示) 则一张地图的值\(S\)为所有空白 ...
- 2020杭电多校 C / HDU 6879 - Mine Sweeper
题意: t组输入,每组输入一个s 你需要输出一个r行c列的阵列,这个阵列中'X'代表炸弹,'.'表示没有炸弹 对于'.'这些位置都会有一个数值,这个值取决于这个位置附近8个位置,这8个位置一共有几个炸 ...
- HZ游记
HZ 游记 Day -1 收拾东西,准备出发. 话说这几天一直比较懒,也没什么心情和效率学习,颓废好几天了,希望到衡水以后能感觉好点. 不知道衡水有没有妹子 非常想看看衡水的样子,但是又害怕封闭式教学 ...
- world.construct(me);
目录 0 引言 0.1 所谓构造题 0.2 重点是动机 (motivation) 1 实践出真知 1.1 「CSP-S 2021」「洛谷 P7915」回文 1.1.1 题目大意 1.1.2 解题过程 ...
- HOJ题目分类
各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...
- 多级弹出菜单jQuery插件ZoneMenu
ZoneMenu是一个菜单jQuery插件,只需占用页面上的一个小区域,却可以实现多级菜单. 在线体验:http://keleyi.com/jq/zonemenu/ 点击这里下载 完整HTML文件代码 ...
- 中英文代码对比系列之Java一例
原文: https://zhuanlan.zhihu.com/p/30905033. 作者为本人. 这个系列将对同一段代码进行中文命名和英文命名两个版本的比较. 目的包括, 演示中文命名, 发现命名时 ...
- 2017-11-09 中英文代码对比系列之Java一例
原文: https://zhuanlan.zhihu.com/p/30905033. 作者为本人. 这个系列将对同一段代码进行中文命名和英文命名两个版本的比较. 目的包括, 演示中文命名, 发现命名时 ...
- FZU1920 Left Mouse Button(dfs)
Problem 1920 Left Mouse Button Accept: 385 Submit: 719 Time Limit: 1000 mSec Memory Limit : 3 ...
随机推荐
- 判断PC端与移动端跳转
var mobile_bs = { versions: function () { var u = navigator.userAgent; return { trid ...
- ES之分析器(Analyzer)及拼音分词器
把输入的文本块按照一定的策略进行分解,并建立倒排索引.在Lucene的架构中,这个过程由分析器(analyzer)完成. 主要组成 character filter:接收原字符流,通过添加.删除或者替 ...
- antd 动态添加表格列 表格不更新
原因:react 对比columns 数组为原数组,内存地址没变: 解决办法:用es6的扩展,生成新数组,添加操作列operateCol setTableColumns([...tableColums ...
- 12组-Beta冲刺-2/5
一.基本情况 队名:字节不跳动 组长博客:https://www.cnblogs.com/147258369k/p/15594989.html Github链接:https://github.com/ ...
- springboot gradle 加速问题
初始化项目使用阿里云 seriver url : https://start.spring.io 直接修改为: https://start.aliyun.com 关键的gradle 修改安装包地址 g ...
- Ubuntu下shell 左侧补零
test_1=1 test=`echo $test_1|awk '{printf("%03d\n",$test_1)}'` 输出为001.
- git 命令 使用记录
这是ider 在pull 代码是报的异常大概意思是本机有未处理的合并可是点击view files都之前删除的一些文件 这种问题可以使用一下命令 git fetch --all && g ...
- [笔记] Android开发中的gradle是什么?
gradle是什么? 先看下文档中的介绍 https://docs.gradle.org/current/userguide/what_is_gradle.html Gradle is an op ...
- vue-pc项目放到电视tv上适配
当部署屏幕小于开发屏幕大小的时候,我们通过transform:scale(0.8)对页面进行整体缩放,部署后不生效时,可以找到项目的index.html文件,将viewpoint这一行代码注释掉,或者 ...
- easypoi多sheet导出
以前一直接触的是单sheet导出,这次的需求换成了多sheet导出,算是一个难点所以得记录一下 底层关键的代码就是: private static void defaultExport(List< ...