Forgery CodeForces - 1059B
一道印章刻印的题目;
具体要求:有一个固定的3*3的印章,给你一个墨迹问能用这个印章印出墨迹吗?(一个像素可以多次被上色)
输入:第一行是墨迹的行列规模,接下来是墨迹
输出:If Andrey can forge the signature, output "YES". Otherwise output "NO".
印章长这样 : 
1. 规模不算特别大,保险起见我用的是scanf读入数据,最后AC后测试发现TIME影响不大。(毕竟思路比较耗时,还是喜欢scanf)
2.思路分析:怎样的'#'才是可以被印上的,这是个关键;
3.细节实现:对所有的印章位置预先遍历一下,这里(ok函数里)要判断你传入函数的一个印章是可以被印的吗?如果在周围的8个位置上出现了'.',那么这是一个非法的位置,直接结束;
如果这是合法的位置用数组v的index来记录周围8个位置(bool值为1)
最后在遍历匹配一下就OK了。
#include<cstdio>
using namespace std;
const int max_size = + ;
char s[max_size][max_size];
bool v[max_size][max_size];
int n, m;//m行n列
bool ok(int x,int y)
{
for(int i=x;i<=x+;i++)
for (int j = y; j <= y + ; j++)
{
if (i == x + && j == y + )continue;
else if (s[i][j] == '.') return false;
}
for (int i = x; i <= x + ; i++)
for (int j = y; j <= y + ; j++)
{
if (i == x + && j == y + )continue;
else v[i][j] = ;
}
return true;
}
int main()
{
memset(v, , sizeof(v));
scanf("%d%d", &m, &n);
for (int i = ; i <= m; i++) scanf("%s", s[i] + );
for (int i = ; i <= m - ; i++)
for (int j = ; j <= n - ; j++)
ok(i, j);//以(i,j)为起点的一次印
bool ans = ;
for (int i = ; i <= m; i++)
{
for (int j = ; j <= n; j++)
{
if (s[i][j] == '#' && !v[i][j]) { ans = ; break; }
//如果当前位置有墨印,但不可能被染色
}
if (!ans) break;
}
if (ans)printf("YES\n");
else printf("NO\n");
return ;
}
Forgery CodeForces - 1059B的更多相关文章
- CodeForces 1059B
Description Student Andrey has been skipping physical education lessons for the whole term, and now ...
- 2018SDIBT_国庆个人第六场
A - A codeforces 714A Description Today an outstanding event is going to happen in the forest — hedg ...
- Codeforces Round #514 (Div. 2) B - Forgery
这个题我一开始没思路,最后也没思路 2个小时一直没思路 本来还想解释题意的,写了半天发现解释的不是很清楚,你还是google翻译一下吧 这个题解法是这样的: 首先,给你图案里面有很多的点,每个点的周围 ...
- Codeforces Round #514 (Div. 2)
目录 Codeforces 1059 A.Cashier B.Forgery C.Sequence Transformation D.Nature Reserve(二分) E.Split the Tr ...
- Codeforces Round #668 (Div. 2)A-C题解
A. Permutation Forgery 题目:http://codeforces.com/contest/1405/problem/A 题解:这道题初看有点吓人,一开始居然想到要用全排序,没错我 ...
- Codeforces Round #668 (Div. 2)【ABCD】
比赛链接:https://codeforces.com/contest/1405 A. Permutation Forgery 题意 给出一个大小为 $n$ 的排列 $p$,定义 \begin{equ ...
- ABP Zero示例项目登录报错“Empty or invalid anti forgery header token.”问题解决
ABP Zero项目,登录时出现如图"Empty or invalid anti forgery header token."错误提示的解决方法: 在 WebModule.cs的P ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
随机推荐
- HTMLTestRunner优化:带截图、饼图、失败重跑
github地址:https://github.com/yoyoketang/sele_project_th9
- linux 文件解压
解压 tar -xvf file.tar //解压 tar包 tar -xzvf file.tar.gz //解压tar.gz tar -xjvf file.tar.bz2 //解压 tar.bz ...
- 快捷键 xshell
xshell.ue 不同的界面切换crtl tab ; ctrl f6
- python系列——文件操作
打开和关闭 示例:python系列——文件操作的代码 打开模式 读取 写入
- java并发编程之美-阅读记录2
2.1什么是多线程并发编程 并发:是指在同一时间段内,多个任务同时在执行,并且执行没有结束(同一时间段又包括多个单位时间,也就是说一个cpu执行多个任务) 并行:是指在单位时间内多个任务在同时执行(也 ...
- 使用api获取数据————小程序
使用api获取数据----小程序 onLoad: function (options) { //打开页面即执行. let that = this; wx.request({ //建立链接 url: ' ...
- 【记录】解决前端form表单回车禁止刷新页面
最近弄前端 有form表单的情况下 按回车会自动刷新当前页面. 现记录解决方案如下: 1.去掉表单 2.不要让表单中只有一个文本框(增加一个隐藏的文本框就行) 3.以上两点都不想使用,那么就还可以在表 ...
- size - 列出段节大小和总共大小
总览 (SYNOPSIS) size [-A|-B|--format=compatibility] [--help] [-d|-o|-x|--radix=number] [--target=bfdna ...
- 第十一章 存储之ConfigMap
1.描述信息 ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件.命令行参数或环境变量中读取配置信息.ConfigMap API 给我们提供了向容器中注入配置 ...
- go语言从例子开始之Example21.协程
Go 协程 在执行上来说是轻量级的线程. golang使用协程用go关键字.后边正常调用函数. Example: package main import "fmt" func ak ...