Mine Sweeper II

Mine Sweeper II

https://ac.nowcoder.com/acm/contest/9925/B

题意:

给两个的扫雷图,问能不能至多反转个格子,把图B的的空白区权值和变成和图A相同。

思路:

这题有浓厚的气息,可惜打的有点少,没做出来,一看代码秒懂。
既然是式的,样例必然是误导性的,就怕样例给好了让人一眼给看出来。
其实答案只要输出A的原图或者反图即可,选原图还是反图不难,原图和反图是互补的,B不能改成A的原图,那么就一定能改成反图,反之亦然。
下面证明反图的可性性:
非地雷单元中的数字之和其实就相邻格子(八个方向上的相邻)不同点对的个数,'.'和'X'对换后相邻格子上的点该不同的还是不同、该相同的还是相同,不影响非地雷单元中的数字之和。

MyCode:

#include <bits/stdc++.h>
using namespace std;
string A[1002],B[1002];
int main() {
    int n,m,pot,cnt=0;
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
    cin>>n>>m;
    for(int i=1; i<=n; ++i) cin>>A[i];
    for(int i=1; i<=n; ++i) cin>>B[i];
    for(int i=1,j; i<=n; ++i) {
        for(int j=0; j<m; ++j) {
            if(A[i][j]!=B[i][j]) cnt+=1;
            else B[i][j]='X'+'.'-B[i][j];
        }
    }
    if((cnt<<1)<=n*m) for(int i=1; i<=n; ++i) cout<<A[i]<<endl;
    else for(int i=1; i<=n; ++i) cout<<B[i]<<endl;
}
全部评论

相关推荐

现在是2026.2.27,距离我2025.8.16在boss上投出第一份简历以来已经过去了半年多时间了。可能许多牛友对我并不陌生,在去年的89月份,深陷实习焦虑的我不停的在牛客上发帖求助,改过的简历不知道发了多少次。因为双非本的缘故,在实习这条路上可谓是处处碰壁。boss上四位数的沟通只换来两位数的回复,好不容易约到的面试很多还因为各种原因被挂。最终在9月底遇到了我实习过程中的第一个贵人:美团实习的ld。尽管那是个测开岗,但是没有关注我实际的技术栈,而是用专业的提问让我感受到了前所未有的面试体验,发掘了自己的技术闪光点。最终让我决定放弃了另一家中小厂的后端。他们非常尊重我对开发学习的热情,也给足了我自由发挥的空间,如果不是他们让我深度参与的用例生成项目,我或许连接到后面面试的机会都没有。尽管岗位不是开发,但这个过程中对大厂工作流程的深度参与以及对业务,项目,和技术的思维提升对我后续的开发面试一样提供了巨大的帮助。时代的洪流让我们每个人都被迫卷入其中,错过了互联网的红利时期,无论实习还是秋招都令不同背景的同学倍感压力,尽管如此我们依旧要相信:努力定有回报最后祝各位27的兄弟姐妹们,在暑期实习的面试路上一路披荆斩棘,策马扬鞭,用梦中情司的offer回应自己一直以来不愿放弃的拼搏timeline:2.6一面2.11&nbsp;二面2.12&nbsp;三面&nbsp;当天转hr面2.26&nbsp;hr面,面完云证+录用评估2.27&nbsp;offer
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务