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

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(ICPC)亚洲区域赛(上海)Mine Sweeper II(思维)相关的知识,希望对你有一定的参考价值。

LINK

设一个空格子周围有 x x x颗雷,那么这个格子的数字是 x x x

此时如果把周围的 x x x颗雷变成空格子,原来的空格子变成雷

那么中间的雷(原来的空格子)会给周围的 x x x个空格子(原来的雷),每个贡献 1 1 1

从这个角度来看,原图和补图的数字是相等的

这启示我们把 B B B变成 A A A或者 A A A的补图即可

转化次数一定有一个小于一半,所以一定有解

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e3+10;
char a[1009][1009],b[1009][1009];
int n,m,t;
int main()
{
	cin >> n >> m;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
		cin >> a[i][j];
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
		cin >> b[i][j];
	int ans = 0;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	{
		if( a[i][j]!=b[i][j] )	ans++;
	}
	if( ans<=n*m/2 )
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
				cout << a[i][j];		
			cout << endl;
		}
	}
	else
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				if( a[i][j]=='.' )	cout << 'X';
				else	cout << ".";
			}
			cout << endl;
		}		
	}
}

以上是关于(ICPC)亚洲区域赛(上海)Mine Sweeper II(思维)的主要内容,如果未能解决你的问题,请参考以下文章

(ICPC)亚洲区域赛上海 M.Gitignore(模拟,map)

Digit sum (第 44 届 ACM/ICPC 亚洲区域赛(上海)网络赛)进制预处理水题

第 46 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海),签到题6题

第 46 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海),签到题6题

第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海),签到题5题

第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海),签到题5题