HELLO WORLD--一起加油(🍺)!|

kingwzun

园龄:3年6个月粉丝:111关注:0

2020 ICPC 亚洲区域赛 上海站

遇到If multiple solutions exist, print any of them.

不要相信题目给的测试

B Mine Sweeper II

讲解
题意:
给两个n×m的扫雷图,每个坐标: 雷用X表示,非雷用·表示。

如果某格子不是雷,那么该点的权值是:周围8个格子中,雷的数量。
求解:
改变下面图不超过(m×n)/2次操作(每次操作 = 雷变成数字 / 者数字变成雷),使得下面的权值和等于上面的图权值和。

思路:
统计一下两图的差别,如果超过(m×n)/2就把上面的图反转,
否则就输出上面的图。
因为图是互补的时候,数字也是相等的。
代码:

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1010;
int n,m;
char a[N][N];
char b[N][N];
int main()
{
cin>>n>>m;
int i,j;
for(i=0;i<n;i++) cin>>a[i];
for(i=0;i<n;i++) cin>>b[i];
int cnt=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i][j]!=b[i][j]) cnt++;
}
}
if(cnt<=n*m/2)
for(i=0;i<n;i++)
{
cout<<a[i]<<endl;
}
else
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i][j]=='.') cout<<"X";
else cout<<".";
}
cout<<endl;
}
return 0;
}

本文作者:kingwzun

本文链接:https://www.cnblogs.com/kingwz/p/15376928.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   kingwzun  阅读(127)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示