这是一道超级水的模拟 + 简单搜索。

说说思路:

先找到中心点,就是自己和上下左右都为 * 的。

上下左右上的所有 * 都删掉,然后再看看有没有多余的 * 如果有输出 NO 否则输出 YES

比如说有这样一个 \(n = 5\) 的图:

\[\begin{matrix}
.&.&.&.&*\\
.&.&*&.&.\\
.&*&*&*&*\\
.&.&*&.&.\\
.&.&*&.&.
\end{matrix}\]

首先一个一个找,当找到一个点,自己本身和上下左右均为 \(*\) 时(如图中 \(a\) 点):

\[\begin{matrix}
.&.&.&.&*\\
.&.&*&.&.\\
.&*&a&*&*\\
.&.&*&.&.\\
.&.&*&.&.
\end{matrix}\]

将上下左右上的一条全部变为 \(*\):

\[\begin{matrix}
.&.&.&.&*\\
.&.&.&.&.\\
.&.&.&.&.\\
.&.&.&.&.\\
.&.&.&.&.
\end{matrix}\]

那我们就会发现图中还有 \(*\) 没有变成 \(.\) 这就说明此加号不合法。

上代码:

/*
Problem:CF1182B
Date:14/06/20 12:02
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<string>
#define line cout << endl
#define int long long
using namespace std;
char ma[2005][2005];
int h, w;
bool flag;
void up (int i, int j) {
ma[i][j] = '.';
if (ma[i - 1][j] == '*')
return up(i - 1, j);
}
void down (int i, int j) {
ma[i][j] = '.';
if (ma[i + 1][j] == '*')
return down(i + 1, j);
}
void left (int i, int j) {
ma[i][j] = '.';
if (ma[i][j - 1] == '*')
left(i, j - 1);
}
void right (int i, int j) {
ma[i][j] = '.';
if (ma[i][j + 1] == '*')
return right(i, j + 1);
}
void kill (int i, int j) {
ma[i][j] = '.';
up (i - 1, j);
down (i + 1, j);
left (i, j - 1);
right (i, j + 1);
}
void test () {//测试(i,j)是不是一个加号的中心
for (int i = 1; i <= h; i++) {
for (int j = 1; j <= w; j++)
if (ma[i][j] == '*' &&
ma[i - 1][j] == '*' &&
ma[i][j - 1] == '*' &&
ma[i + 1][j] == '*' &&
ma[i][j + 1] == '*') {//对第一个可能的十字的中心
kill (i, j);//抹去这个十字
flag = true;
break;
}
if (flag) break;
}
for (int i = 1; i <= h; i++)//这时,应没有'*'了
for (int j = 1; j <= w; j++)
if (ma[i][j] == '*')
flag = false;
}
signed main () {
cin >> h >> w;
for(int i = 1; i <= h; i++)
for(int j = 1; j <= w; j++)
cin >> ma[i][j];
test();
if(flag) puts("YES");
else puts("NO");
return 0;
} 谢谢。

【题解】「CF1182B」Plus from Picture的更多相关文章

  1. 题解 「HDU6403」卡片游戏

    link Description 桌面上摊开着一些卡牌,这是她平时很爱玩的一个游戏.如今卡牌还在,她却不在我身边.不知不觉,我翻开了卡牌,回忆起了当时一起玩卡牌的那段时间. 每张卡牌的正面与反面都各有 ...

  2. 题解 「SCOI2016」萌萌哒

    link Description 一个长度为 $ n $ 的大数,用 $ S_1S_2S_3 \ldots S_n $表示,其中 $ S_i $ 表示数的第 $ i $ 位,$ S_1 $ 是数的最高 ...

  3. 题解 「SDOI2017」硬币游戏

    题目传送门 Description 周末同学们非常无聊,有人提议,咱们扔硬币玩吧,谁扔的硬币正面次数多谁胜利. 大家纷纷觉得这个游戏非常符合同学们的特色,但只是扔硬币实在是太单调了. 同学们觉得要加强 ...

  4. 题解 「ZJOI2018」历史

    题目传送门 Description 九条可怜是一个热爱阅读的女孩子. 这段时间,她看了一本非常有趣的小说,这本小说的架空世界引起了她的兴趣. 这个世界有 \(n\) 个城市,这 \(n\) 个城市被恰 ...

  5. 题解 「BZOJ3636」教义问答手册

    题目传送门 Description 作为泉岭精神的缔造者.信奉者.捍卫者.传承者,Pear决定印制一些教义问答手册,以满足泉岭精神日益增多的信徒.Pear收集了一些有关的诗选.语录,其中部分内容摘录在 ...

  6. 题解「BZOJ4310」跳蚤

    题目传送门 Description 现在有一个长度为 \(n\) 的字符串,将其划分为 \(k\) 段,使得这 \(k\) 段每一段的字典序最大子串中字典序最大的字符串字典序尽量小.求出这个字符串. ...

  7. 题解 「BZOJ2137」submultiple

    题目传送门 题目大意 给出 \(M,k\) ,求出 \[\sum_{x|M}\sigma(x)^k \] 给出 \(P_i\),满足 \(n=\prod_{i=1}^{n}a_i^{P_i}\),其中 ...

  8. 题解 「BZOJ2178」圆的面积并

    题目传送门 题目大意 给出 \(n\) 个圆,求它们并的面积大小. \(n\le 10^3\) 思路 如果您不会自适应辛普森法,请戳这里学习 其实我们发现,如果我们设 \(f(x)\) 表示 \(x= ...

  9. 题解 - 「MLOI」小兔叽

    小兔叽 \(\texttt{Link}\) 简单题意 有 \(n\) 个小木桩排成一行,第 \(i\) 个小木桩的高度为 \(h_i\),分数为 \(c_i\). 如果一只小兔叽在第 \(i\) 个小 ...

随机推荐

  1. 剑指offer刷题(Tree)

    开篇 二刷剑指offer了,本来用Tyora记的笔记,发现字数到四万了就变得好卡o(╥﹏╥)o,刚好开始写博客,就转过来吧,记下来子自己看.不废话,开刷... JZ26. 树的子结构 输入两棵二叉树A ...

  2. Function(函数分享)第二节

    一.类型注解 1.1 类型注解 函数的类型注解分为两个部分:参数类型注解和返回值类型注解.其中返回值类型注解有时候我们可以直接省略,因为Typescript可以根据返回的语句来自动判断出返回值的类型. ...

  3. Android 滑动删除控件推荐

    implementation 'com.github.mcxtzhang:SwipeDelMenuLayout:V1.3.0' <?xml version="1.0" enc ...

  4. Service Cloud零基础学习(二)Entitlement & MileStone

    https://trailhead.salesforce.com/content/learn/modules/entitlements 很少会有人不买东西,买的多了也很少没有人没有经历过售后流程.我们 ...

  5. vue路由参数的获取、添加和替换

    获取路由参数 getUrlKey(name){//获取url 参数 return decodeURIComponent((new RegExp('[?|&]'+name+'='+'([^&am ...

  6. 新鲜出炉!花了三天整理的JVM复习知识点,面试突击必备!

    此次JVM知识点包含以下几个部分 1.类加载机制 2.jvm运行时数据区 3.java对象内存布局 4.jvm内存模型 5.垃圾回收机制 6.垃圾收集器 7.问题排查 一 类加载机制 主要说的部分是这 ...

  7. 思维导图iMindMap可以在哪些领域应用

    生活工作中你常常会遇到许多力所不能及的事情,感到无奈.茫然,这时候你急需一个帮手来帮你打破困境,思维导图就是这样的救世主,至于它有哪些力所能及的事情就是下面小编要跟你讲的. 你是否经常遇到过这样的情况 ...

  8. Guitar Pro7应该怎么添加音色

    众所周知,音色是乐器的灵魂所在.音色的好坏,直接影响到了整首曲子的质量.Guitar Pro7中,用户不仅可以切换乐器模拟器,还能分别对其进行音色调整.对于新手而言,Guitar Pro7是一款非常合 ...

  9. 语音识别2 -- Listen,Attend,and Spell (LAS)

    LAS是Listen(Encoder),Attend,和Spell(Decoder)的简称 第一个步骤Listen(Encoder) listen的作用是输入一段语音信号,输出一段向量,去掉语音中的杂 ...

  10. Dynamics 365-表单元素取值/赋值

    取值/赋值 参考: 山人丶 提示: 查找类型赋值时需指定目标实体,记录名称及id值 时间和日期类型赋值时需赋值Date类型 //获取new_name的值(单行文本) Xrm.Page.getAttri ...