博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces - 1059B Forgery (思维)
阅读量:2135 次
发布时间:2019-04-30

本文共 1600 字,大约阅读时间需要 5 分钟。

题目大意:

       给出一个n*m的图案,你有一个印章,印章可以印出3*3的图案(图案是#),但中心的那一个点印不出来,印出来就像这样

问是否可以用印章印出那样的图案(可以覆盖印,但如果要印,整个印章都需在团内,不能像印章在左上角印,只印了一部分在图案上)

题解:

       根据给出的图案我们来印一个图案。开始图案都是‘.’,扫一遍给出的图案(枚举中心那个点),因为中心那个点是不会印上的,所以不用管它,只要中心点的周围一圈全都是'#',那么我们就可以印,就在我们的图案上,把这一圈都赋为‘#’。最后把我们画出的图和原图案比对,如果一致就是YES,否则就是NO

 

        在此diss出题人的毛式英语,真真是说了些神马,题意描述的一点也不清,还一连发了3条解释,不好意思看了解释我也还没明白题意,还是在和队友的交互中逐渐明白了题意......

#include
#include
#define mod 1000000007#define INF 1000000007using namespace std;typedef long long ll;int dx[]= {-1,0,1};int dy[]= {-1,0,1};int n,m;char a[1010][1010];char t[1010][1010];bool pd(int x,int y){ for(int i=0; i<3; ++i) for(int j=0; j<3; ++j) { if(i==1 && j==1)continue; if(x+dx[i]<1 ||x+dx[i]>n || y+dy[i]<1 || y+dy[i]>m||a[x+dx[i]][y+dy[j]]!='#') return 0; } return 1;}void tu(int x,int y){ for(int i=0; i<3; ++i) for(int j=0; j<3; ++j) { if(i==1 && j==1)continue; t[x+dx[i]][y+dy[j]]='#'; }}bool d(){ for(int i=1; i<=n; ++i) for(int j=1; j<=m; ++j) if(t[i][j]!=a[i][j]) return 0; return 1;}int main(){ //freopen("input.txt","r",stdin); cin>>n>>m; for(int i=1; i<=n; ++i) for(int j=1; j<=m; ++j) cin>>a[i][j]; bool flag=1; for(int i=1; i<=n; ++i) for(int j=1; j<=m; ++j) t[i][j]='.'; for(int i=1; i<=n; ++i) for(int j=1; j<=m; ++j)//(i,j)是中心点 if(pd(i,j)) tu(i,j); if(d()==0)//如果图案不一致 flag=0; if(flag) puts("YES"); else puts("NO"); return 0;}

 

转载地址:http://nkfgf.baihongyu.com/

你可能感兴趣的文章
作为一名软件测试工程师,需要具备哪些能力
查看>>
【Pyton】【小甲鱼】类和对象:一些相关的BIF(内置函数)
查看>>
【Pyton】【小甲鱼】魔法方法
查看>>
单元测试需要具备的技能和4大阶段的学习
查看>>
【Loadrunner】【浙江移动项目手写代码】代码备份
查看>>
Python几种并发实现方案的性能比较
查看>>
[Jmeter]jmeter之脚本录制与回放,优化(windows下的jmeter)
查看>>
Jmeter之正则
查看>>
【JMeter】1.9上考试jmeter测试调试
查看>>
【虫师】【selenium】参数化
查看>>
【Python练习】文件引用用户名密码登录系统
查看>>
学习网站汇总
查看>>
【Python】用Python打开csv和xml文件
查看>>
【Loadrunner】性能测试报告实战
查看>>
【自动化测试】自动化测试需要了解的的一些事情。
查看>>
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>
Fiddler 抓包工具总结
查看>>
【雅思】雅思需要购买和准备的学习资料
查看>>