zoukankan      html  css  js  c++  java
  • 牛客小白月赛4 C 病菌感染

    链接:https://www.nowcoder.com/acm/contest/134/C
    来源:牛客网
    
    题目描述 
    铁子和顺溜上生物课的时候不小心将几滴超级病菌滴到了培养皿上,这可急坏了他们。
    培养皿可以被看成一个n*n的方格,最初病菌滴在了这n*n的格子中的某些格子,病菌的传染方式是这样的,如果一个方格与两个或多个被感染的方格相邻(两个方格相邻当且仅当它们只有一条公共边),
    那么它就会被感染。现在铁子和顺溜想知道,最终所有的方格会不会都被感染。
    输入描述:
    第一行两个整数n,m。n表示方格的规格,m表示最初病菌所在的格子数。(1 ≤ n ≤ 1000, 0 < m < n)。
    接下来m行每行两个整数xi,yi表示第xi行的第yi个格子有病菌。
    数据保证不会有两个病菌初始时在同一个格子。
    输出描述:
    如果最终所有的方格都会被感染,输出 YES。
    否则输出 NO。
    示例1
    输入
    3 2
    1 2
    2 2
    输出
    NO
    

    题解+AC代码:

    //还挺简单的,按第一行逐列遍历第j列的副对角线上和j+2列的副对角线,处理一下就好了。
    //但是官方题解说,因为周长一定,无论怎么输入答案都是NO。
    #include<iostream> #include<algorithm> #include<cstring> using namespace std; int n, m; int wap[1001][1001]; int main() { while (cin >> n >> m) { memset(wap, 0, sizeof(wap)); int x, y; for (int i = 1; i <= m; ++i) { cin >> x >> y; wap[x][y] = 1; } int k; for (int i = 1; i <= m; ++i) { k = 1; for (int j = i; j >= 1; --j) { if (wap[k][j] == 1 && wap[k + 1][j - 1] == 1 && k + 1 <= n && j - 1 >= 1) { wap[k][j - 1] = 1; wap[k + 1][j] = 1; } else if (wap[k][j] == 1 && wap[k + 1][j + 1] == 1 && k + 1 <= n && j + 1 <=n) { wap[k][j + 1] = 1; wap[k + 1][j] = 1; } } } int node = 0; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) { if (!wap[i][j]) { node = 1; break; } } } if (node) cout << "NO" << endl; else cout << "YES" << endl; } return 0; }

    今天也是元气满满的一天,good luck Ikefire;

  • 相关阅读:
    Mongo Windows 基本使用入门
    ASP.NET Web API 使用Swagger使用笔记
    Smtp协议与Pop3协议的简单实现
    详解boost库中的Message Queue .
    Bencode编码解析的C++实现
    pugixml使用教程
    在QT中使用Irrlicht引擎的方法与步骤
    七大查找算法
    java保留小数点两位的4种方法
    [Node] nvm 安装 node 和 npm
  • 原文地址:https://www.cnblogs.com/cattree/p/9204955.html
Copyright © 2011-2022 走看看