CF1182B Plus from Picture 题解
写在前面
为什么在已经有 \(12\) 篇题解后,我还是要写这篇题解?
因为这篇题解提供一个码量较小,且时间复杂度严格 \(O(wh)\) 的做法,目前这种做法题解区没有。
进入正题
设 \(cnt[i]\) 表示地图中的 * 周围四联通有 \(i\) 个 * 的位置的数量
考虑到地图中有且仅有一个 + 形图形的性质:
\(1\) :若要保证有且仅有一个 + 形图形,则 \(cnt[4]=1\) 。因为每个 + 形图形对应一个周围四联通有四个 * 的 * (中间那一个),所以周围四联通有四个 * 的 * 有且仅有一个 。
括号圈起来的是这一条所描述的点,后面也是如此:
*
*(*)*
*
\(2\) :若要保证有且仅有一个 + 形图形,则 \(cnt[1]=4\) 。因为每个 + 形图形对应四个周围四联通有一个 * 的 * ( + 形图形的最外围),所以周围四联通有一个 * 的 * 有且仅有四个 。
(*)
(*)*(*)
(*)
\(3\) :若要保证除 + 形图形各点之外,整张地图均为 . ,则 \(cnt[0]=0\) 且 \(cnt[3]=0\) 。因为 + 形图形中不存在这样的点,若存在,则必然是 + 形图形各点之外的 * ,不能保证除 + 形图形各点之外,整张地图均为 . 。
. . . .(*)
. * . . .
*(*). . .
. * . . .
\(4\) :对于 \(cnt[2]\) ,如果上面的点与下面的点,左边的点和右边的点分别相同,则这个点对结果无影响。因为 + 形图形可能存在这样的点。
*
**(*)*
(*)
*
\(5\) :对于 \(cnt[2]\) ,如果不满足上面情况,则地图中除 + 形图形各点之外,整张地图必然不均为 . 。因为 + 形图形中同样不存在这样的点。
. . . .
.(*)* .
. *(*).
. . . .
所以,只要判断这五条性质,就能得出结果。
复杂度分析
很显然,扫一遍数组就可以得到结论了。
时间复杂度: \(O(wh)\)
空间复杂度: \(O(wh)\)
完整代码
#include <bits/stdc++.h>
using namespace std;
int w,h,cnt[5];
char map1[501][501];
int main()
{
scanf("%d%d",&w,&h);
for(int i=0;i<w;i++)
scanf("%s",map1[i]);
for(int i=0;i<w;i++)
for(int j=0;j<h;j++)
{
int ans1=0,ans2=0;
if(map1[i][j]!='*')continue; \\如果不是*,没有必要计算
if(i-1>=0&&map1[i-1][j]=='*')ans1++;
if(i+1<w&&map1[i+1][j]=='*')ans1++; \\上下点的情况
if(j-1>=0&&map1[i][j-1]=='*')ans2++;
if(j+1<h&&map1[i][j+1]=='*')ans2++; \\左右点的情况
if(ans1%2&&ans2%2) \\判断上下左右点是否分别相等
{ \\如果分别相等则对应的计数一定都为偶数
printf("NO\n");
return 0;
}
cnt[ans1+ans2]++;
}
if(cnt[0]==0&&cnt[1]==4&&cnt[3]==0&&cnt[4]==1)printf("YES\n"); \\综合五条性质判断
else printf("NO\n");
return 0;
}
后记
于 \(2022\) 年 \(12\) 月 \(16\) 日达成最优解。

CF1182B Plus from Picture 题解的更多相关文章
- UVa-10652 包装木板
Input: standard inputOutput: standard output Time Limit: 2 seconds The small sawmill in Mission, Bri ...
- 【题解】「CF1182B」Plus from Picture
这是一道超级水的模拟 + 简单搜索. 说说思路: 先找到中心点,就是自己和上下左右都为 * 的. 上下左右上的所有 * 都删掉,然后再看看有没有多余的 * 如果有输出 NO 否则输出 YES. 比如说 ...
- 【题解】POJ2279 Mr.Young′s Picture Permutations dp
[题解]POJ2279 Mr.Young′s Picture Permutations dp 钦定从小往大放,然后直接dp. \(dp(t1,t2,t3,t4,t5)\)代表每一行多少人,判断边界就能 ...
- 题解报告:hdu 1162 Eddy's picture
Problem Description Eddy begins to like painting pictures recently ,he is sure of himself to become ...
- [题解]P1856 [USACO5.5]矩形周长Picture
Loli 考试的题目之一 题目地址 \(N^2\)做法 #include <cstdio> #include <cstring> #define re register #de ...
- POJ P2279 Mr. Young's Picture Permutations 题解
每日一题 day14 打卡 Analysis 五维dpf[a1,a2,a3,a4,a5]表示各排从左端起分别占了a1,a2,a3,a4,a5个人时合影方案数量然后我们枚举a1,a2,a3,a4,a5从 ...
- 【题解】CF1368C Even Picture
\(\color{purple}{Link}\) \(\text{Solution:}\) 这是一道构造题. 题目要求恰好有\(n\)个点的四周全都是灰色点,所以直接输正方形是不行了. 考虑\(k=1 ...
- [POJ1177]Picture
[POJ1177]Picture 试题描述 A number of rectangular posters, photographs and other pictures of the same sh ...
- NBUT1541 Rainwater 题解
http://cdn.ac.nbutoj.com/Problem/view.xhtml?id=1541 When rain, nocLyt discovered a magical phenomeno ...
- hdu 1828 Picture(线段树 || 普通hash标记)
http://acm.hdu.edu.cn/showproblem.php?pid=1828 Picture Time Limit: 6000/2000 MS (Java/Others) Mem ...
随机推荐
- GPFS并行文件系统部署实践
环境 ubuntu22.04 试用版下载链接 https://www.ibm.com/cn-zh/products/storage-scale 我的版本:Storage_Scale_Developer ...
- Filter与Interceptor的区别
前言 在看springboot项目时,其中的会话持续时,了解到token,session,jwt等方法,但是接着我就了解到过滤器(Filter)以及拦截器(Interceptor),感觉这两个东西真的 ...
- 【笔记】Python3|(一)Python 申请并调用国内百度、阿里、腾讯、有道的翻译 API 的教程和测试情况(第三方库 translate 和 腾讯 API 篇)
var code = "dccf4c95-7458-4b38-b8ae-d45b3e59c218" 价格和 API 申请参考: 免费翻译接口最新最全汇总(百度翻译,腾讯翻译,谷歌翻 ...
- 【工具】Vscode翻译插件推荐(不用谷歌翻译api、支持短句英汉互译、支持查词、支持自动补全、不需要浏览器)
2024/04/24说明:这篇暂时修改为粉丝可见,因为正在冲粉丝量,等到我弄完了粉丝量的要求,我就改回来!不方便看到全文的小伙伴不好意思!! 需求: 1)偶尔需要查英文生词: 2)有时候想不起来中文对 ...
- #React中类组件中关于回调函数的一个问题
在ES6中,类中定义的方法,是放在原型对象的,供实例对象引用. //创建一个Person类 class Person { constructor(name,age) { this.name = nam ...
- odoo知识图谱
最近项目交付后,准备将系统整个知识点整理一下,下面是目录,后面针对目录编写文档--todo
- 怒更一波TransDuck免费的声音克隆和AI配音功能
宝子们! 最近咱软件TransDuck的免费声音克隆和AI配音功能被大家用爆啦!感谢各位自来水疯狂安利!! DD这里也是收到好多用户提的宝贵建议!所以,连夜肝了波更新! 这次重点更新使用克隆音色进行A ...
- Java安全_SQL注入
[!NOTE] 本次学习使用开源项目: https://github.com/JoyChou93/java-sec-code/blob/master/src/main/java/org/joychou ...
- 记一次使用Flannel插件排错历程
记一次使用Flannel插件排错历程 原来使用的是Calico插件,这不准备学习K8s的网络,就准备换成Flannel了,然后噩梦就开始了... 直接使用kubectl apply -f 安装了fla ...
- Kubernetes如何通过StatefulSet支持有状态应用?
Kubernetes如何通过StatefulSet支持有状态应用? 为什么Deployment不能编排所有类型应用? Deployment认为一个应用中所有的Pod是完全一样的,所以他们之间没有顺序, ...