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 ...
随机推荐
- Jmeter登录中的cookie问题
Jmeter中发送多个http请求,由于后面的请求需要登录后才能获取到数据,所以前面先要发送登录请求. 登录时会写cookie到本地,后面的请求中会读取cookie中的JSESSIONID,若后面的请 ...
- CF1241 D Sequence Sorting(离散化+DP)
题意: 给定数组a[n],用两种操作: 1.将数组中所有值为x的数移至开头 2.将数组中所有值为x的数移至末尾 问,经过最少多少次操作,能将数组a[n]变为非递减的有序数列? (1<=n< ...
- sublime text3中使用PHP编译系统
前言: php是服务器端语言,我们平时写的php代码想要查看运行结果的话,通常会搭建web服务器,然后通过浏览器访问.而对于有时候一些简单的测试代码来说,此过程就有点繁琐了.编译系统的好处是,可以让我 ...
- 计算两个日期之间相差的天数(带带负数) 支持格式YYYY-mm-dd和YYYY-mm-dd HH:mm:ss
/** * 计算两个日期之间相差的天数(带带负数) 支持格式YYYY-mm-dd比较 * @param higDate 减数 * @param lowDate 被减数 * @returns 差值天数 ...
- css3中的scroll-behavior属性
scroll-behavior属性 当用户手动导航或者 CSSOM scrolling API 触发滚动操作时,CSS 属性 scroll-behavior 为一个滚动框指定滚动行为,当用户通过鼠标滑 ...
- LeetCode Linked List Easy 83. Remove Duplicates from Sorted List
Description Given a sorted linked list, delete all duplicates such that each element appear only onc ...
- Nginx之Keepalived
目录 Nginx之Keepalived 1. Keepalived 高可用基本概述 1.1 什么是高可用 1.2 高可用通常使用什么软件? 1.3 keepalived是如何实现高可用的? 1.4 那 ...
- Oracle之子查询:Top-N问题
学习了SQL子查询,遇到个Top-N问题,即:加入有张工资表(这里使用Oracle SCOTT用户的emp表),需要查找工资最高的3个员工信息,以下列格式输出: 乍眼一看,这很简单啊,对sal进行排序 ...
- c++网络库之 poco
java 不好吗?java面向对象很好啊. poco 做的像 java 用起来更面向对象,这是优势.开发速度提升很多.boost 那种是给大牛看的.我觉得 poco 用起来方便,不清楚的地方随时看源码 ...
- Docker配置阿里云镜像加速pull
前言:默认Docker拉取镜像是从Docker Hub上拉取,但由于防火墙的原因,导致镜像下载非常慢.为了提高拉取镜像的速度,可以配置阿里镜像或是网易镜像加速,通过使用经验推荐配置阿里镜像. 申请个人 ...