2018 3.5下午自测

Posted adelalove

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018 3.5下午自测相关的知识,希望对你有一定的参考价值。

A 十字架

time:1s   memery:128MB
题目描述
D 是虔诚的嘟嘟教徒。现在小 G 送他了一幅著名画家芬达奇的作品。这是
一幅 n × n 的作品,由”.” 或者”#” 构成,其中”.” 相当于空白。但是现在小 D 怀疑
G 送给他了一幅赝品。正版芬达奇的画作,是由若干个互不重叠的十字架拼起
来的。每个十字架由五个”#” 组成,如下:
.#.
###
.#.
而赝品则不能将所有的”#” 分成若干个互不重叠的十字架,如:
.#..
####
.#..
特别地,如果一幅画里面全都是”.”,这仍然是一幅正品。
你的任务是帮助小 D 判断,小 G 送他的这幅画到底是不是正品。
输入格式
输入文件第一行一个数字 n,含义如题目所述。
2 行到第 n + 1 行,每行 n ’.’ 或者’#’,描述整张画。
输出格式
输出文件一行,如果是正品,输出”YES”;如果是赝品,输出”NO”

样例输入 1
5
.#...
####.
.####
...#.
.....
样例输出 1
YES
样例输入 2
4
####
####
####
####
样例输出 2
NO
数据范围
40% 数据,1 n 10
70% 数据,1 n 50
100% 数据,1 n 100

记得一开始做这题的时候一点思路都没有,

可是别人那时候都已经AC了,果然是太菜了啊。

期望:100  实际:100

解:因为每个十字架都是不同的,所以枚举每个十字架

的中间处,如果是的话,把整个十字架变成‘.‘。

到最后扫一遍整个矩阵,如果还存在‘#‘,说明不合法

 

技术分享图片
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<queue>
 6 #include<cstring>
 7 #include<string>
 8 #include<map>
 9 #define ll long long
10 #define DB double
11 #define eps 1e-3
12 #define inf 2147483647
13 #define mod  100000007
14 using namespace std;
15 inline int read()
16 {
17     int x=0,w=1;char ch=getchar();
18     while(!isdigit(ch)){if(ch==-) w=-1;ch=getchar();}
19     while(isdigit(ch)) x=(x<<3)+(x<<1)+(ch-0),ch=getchar();
20     return x*w;
21 }
22 int n;
23 char s[120][120];
24 int dx[4]={0,0,1,-1};
25 int dy[4]={1,-1,0,0};
26 void work(int x,int y)
27 {
28     s[x][y]=.;
29     for(int i=0;i<=3;++i)
30      s[x+dx[i]][y+dy[i]]=.;
31 }
32 bool ok(int x,int y)
33 {
34     for(int i=0;i<=3;++i)
35     {
36         int xx=x+dx[i],yy=y+dy[i];
37         if(xx<0 || xx>n || yy<0 || yy>n) return 0;
38         if(s[xx][yy]==.) return 0;
39     }
40     return 1;
41 }
42 int main()
43 {
44     freopen("puzzle.in","r",stdin);
45     freopen("puzzle.out","w",stdout);
46     n=read();
47     for(int i=1;i<=n;++i)
48      scanf("%s",s[i]+1);
49     for(int i=1;i<=n;++i)
50      for(int j=1;j<=n;++j)
51       if(s[i][j]==# && ok(i,j)) work(i,j);
52     for(int i=1;i<=n;++i)
53      for(int j=1;j<=n;++j)
54       if(s[i][j]==#){cout<<"NO";return 0;}
55     cout<<"YES";
56     return 0;
57 }
安然流香

 

差的人没有资格说话吧。

 











































以上是关于2018 3.5下午自测的主要内容,如果未能解决你的问题,请参考以下文章

noip2018自测报告

python坑,坑,折腾一个下午python 3.5中 ImportError: No module named BeautifulSoup

Android 实用代码片段

Android 实用代码片段

软件开发中的自测及C代码示例

JavaScript笔试题(js高级代码片段)