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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步