Mine Sweeper II

题意:

给你两个大小为 n * m 的扫雷图 A, B,要求通过最多 n * m/2 次转换(转换指 把一个不是雷的格子变成雷, 或者把一个是雷的格子变成空白格),使得 B图的值 和 A图的值相等(值 就是指 扫雷图上的所有数字之和,没有数字或者雷的地方的值为0)
1≤n,m≤1000

题解:

一开始做时毫无思路,如果暴力下手肯定不行,有什么优化的地方
又一次仔细看题后,突然想到为什么题目要求最多转换次数为n * m / 2,因为避免你将B全部都换一遍,而我们将A全部翻转的到A’,发现A’的值和A是一样的,而B在n * m / 2的交换次数下,是可以到A或者A’的,如果都不能到,那就输出-1,否则输出最近的一个

代码:

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w;
}
const int maxn=1004;
char a[maxn][maxn],b[maxn][maxn];
char ia[maxn][maxn];
int main()
{int n,m;cin>>n>>m;char ch=getchar();for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];if(a[i][j]=='X')ia[i][j]='.';else if(a[i][j]=='.')ia[i][j]='X';}char ch=getchar();}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++)cin>>b[i][j];char ch=getchar();}int sum=0;int sum1=0;int ans=n*m/2;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(b[i][j]!=a[i][j])sum++;if(b[i][j]!=ia[i][j])sum1++;}}if(sum>ans&&sum1>ans){cout<<-1;return 0;}if(sum<=ans){for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cout<<a[i][j];}cout<<endl;}}else if(sum1<=ans){for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cout<<ia[i][j];}cout<<endl;}}return 0;
}

Mine Sweeper II相关推荐

  1. 构造 - Mine Sweeper II - ICPC 2020 上海

    构造 - Mine Sweeper II - ICPC 2020 上海 题意: 给 定 两 个 n × m 的 由 ′ X ′ 和 ′ . ′ 矩 阵 A 和 B , 表 示 两 个 扫 雷 的 矩 ...

  2. 2020 icpc上海站 Mine Sweeper II

    Mine Sweeper II 题意 给你两个用"."和X组成的矩阵,X表示地雷,每个"."周围八个格子有几个雷贡献就是多少,改变第二个字符矩阵,使最后两个矩阵 ...

  3. gym 102900 Mine Sweeper II

    gym 102900 Mine Sweeper II 题目链接 题意 给定两个 n × m n\times m n×m的扫雷地图 A , B A,B A,B,所有非地雷格子都有一个数字,表示这个格子周 ...

  4. 上海ICPC Mine Sweeper II

    上海ICPC Mine Sweeper II 题意:给定扫雷图 A A A和 B B B,它们的大小为 n × m n\times m n×m,设 A A A中所有空白格的贡献为 s u m sum ...

  5. 2020ICPC上海 B Mine Sweeper II(思维)

    链接 题目描述 A mine-sweeper map X {X} X can be expressed as an n × m n\times m n×m grid. Each cell of the ...

  6. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海)B Mine Sweeper II

    题目 A mine-sweeper map {X}X can be expressed as an n\times mn×m grid. Each cell of the grid is either ...

  7. 2020ICPC上海 B.Mine Sweeper II(思维,乱搞)

    题意: 扫雷,给你A,B图.权值为所有非雷点的和,要求你修改B图中不超过(n*m/2)个点,使得A,B图权值相等. 思路: 感觉过的太多了,肯定不难.模拟发现,每个点变化值1,2,3,4-都有,所以大 ...

  8. 2020icpc上海 Mine Sweeper II (思维)

    题目链接:B-Mine Sweeper II_第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海) (nowcoder.com)a 题目大意:给你两个大小为 n * m 的扫雷图 A, B ...

  9. (ICPC)亚洲区域赛(上海)Mine Sweeper II(思维)

    LINK 设一个空格子周围有xxx颗雷,那么这个格子的数字是xxx 此时如果把周围的xxx颗雷变成空格子,原来的空格子变成雷 那么中间的雷(原来的空格子)会给周围的xxx个空格子(原来的雷),每个贡献 ...

最新文章

  1. python中sys.stdout、sys.stdin
  2. 《关键对话》读书笔记作文3700字
  3. 思科CCNA考试实验常用的命令
  4. dede调用当前顶级栏目名称、ID、url方法
  5. 浅谈unity中gamma空间和线性空间
  6. java 全双工服务器_利用Java实现串口全双工通讯_JAVA实例教程_IT部落
  7. 核心编程第五版 配套代码_攻略Python的免费书单:走进编程,从这五本书开始...
  8. XSS攻击---不得不防的网站安全漏洞
  9. kido机器人没反应_QQ机器人常见故障排除方法
  10. 记录一个可以word,xls,PDF互转思维导图的工具
  11. WORD中插入三线制表格
  12. oracle虚拟机共享U盘,技巧分享:虚拟机也能使用U盘及USB设备
  13. 计算机专业应届研究生面试自我介绍,计算机专业研究生面试自我介绍
  14. 杨辉三角(Python-动态规划)
  15. 前端程序员和后端程序员有什么不同?我来告诉你薪资待遇差多少
  16. 苹果cms V10搭建教程 教你如何使用苹果cms搭建一款电影/影视网站【第一节】
  17. (Linux)配置本地yum源
  18. Virtualbox源码分析23 NEM(Hyper-V兼容)4 VMExit
  19. 四元数 右手系-左手系 转换
  20. SQL Compare教程:工作示例——比较和部署两个数据库(下)

热门文章

  1. 每日一笑 | 一些关于学编程的领悟
  2. linux命令clock,简单了解Linux系统中clock命令的使用方法
  3. 从mysql读取图片_如何从sql数据库内读取图片
  4. charts漏斗图表_ECharts漏斗图属性与实例介绍
  5. linux把终端嵌入桌面,在Ubuntu Linux桌面上嵌入终端窗口
  6. c语言实现字母转化为unicode码,用C语言实现中文到unicode码的转换
  7. javascript内存泄漏调试工具mac_node.js 内存泄漏的秘密
  8. cv2.imread读取图像结果none_python cv2.imread 读取中文路径的图片返回为None的问题
  9. python字符串截取方法_如何使用python语言中的字符串方法截取字符串
  10. ios realm 文件_iOS开发中使用Realm数据库