前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >P1789 【Mc生存】插火把

P1789 【Mc生存】插火把

作者头像
attack
发布2018-04-11 17:02:55
1.2K0
发布2018-04-11 17:02:55
举报

题目背景

初一党应该都知道......

题目描述

话说有一天linyorson在Mc开了一个超平坦世界,他把这个世界看成一个n*n的方阵,现在他有m个火把和k个萤石,分别放在x1,y1...xm,ym和o1,p1...ok,pk的位置,问在这个方阵中有几个点会生成怪物?(没有光或没放东西的地方会生成怪物)

P.S.火把的照亮范围是:

代码语言:javascript
复制
|暗|暗| 光 |暗|暗|
|暗|光| 光 |光|暗|
|光|光|火把|光|光|
|暗|光| 光 |光|暗|
|暗|暗| 光 |暗|暗|

萤石:

代码语言:javascript
复制
|光|光| 光 |光|光|
|光|光| 光 |光|光|
|光|光|萤石|光|光|
|光|光| 光 |光|光|

|光|光| 光 |光|光|

输入输出格式

输入格式:

输入共m+k+1行。

第一行为n,m,k。

第2到第m+1行分别是火把的位置xi yi。

第m+2到第m+k+1行分别是萤石的位置oi pi。

注:可能没有萤石,但一定有火把。

所有数据保证在int范围内。

输出格式:

有几个点会生出怪物。

输入输出样例

输入样例#1:

代码语言:javascript
复制
5 1 0
3 3

输出样例#1:

代码语言:javascript
复制
12

这道题没有说n的范围

本来以为要用什么玄学操作。。

结果我还为了多骗点分写了个map。。。

代码语言:javascript
复制
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<map>
 6 #include<algorithm>
 7 #include<map>
 8 #define LL long long int 
 9 using namespace std;
10 const int MAXN=88000;
11 inline void read(int &n)
12 {
13     char c=getchar();n=0;bool flag=0;
14     while(c<'0'||c>'9')    c=='-'?flag=1,c=getchar():c=getchar();
15     while(c>='0'&&c<='9')    n=n*10+c-48,c=getchar();flag==1?n=-n:n=n;
16 }
17 map<pair<int,int>,bool>mp;
18 int main()
19 {
20     int n,a,b;
21     read(n);read(a);read(b);
22     for(int i=1;i<=a;i++)
23     {
24         int x,y;
25         read(x);read(y);
26         mp[make_pair(x,y)]=1;
27         mp[make_pair(x-1,y)]=1;mp[make_pair(x-2,y)]=1;mp[make_pair(x+1,y)]=1;mp[make_pair(x+2,y)]=1;
28         mp[make_pair(x,y-1)]=1;mp[make_pair(x,y-2)]=1;mp[make_pair(x,y+1)]=1;mp[make_pair(x,y+2)]=1;
29         mp[make_pair(x-1,y-1)]=1;mp[make_pair(x+1,y-1)]=1;mp[make_pair(x-1,y+1)]=1;mp[make_pair(x+1,y+1)]=1;
30     }
31     for(int i=1;i<=b;i++)
32     {
33         int x,y;
34         read(x);read(y);
35         mp[make_pair(x,y)]=1;
36         mp[make_pair(x-1,y)]=1;mp[make_pair(x-2,y)]=1;mp[make_pair(x+1,y)]=1;mp[make_pair(x+2,y)]=1;
37         mp[make_pair(x,y-1)]=1;mp[make_pair(x,y-2)]=1;mp[make_pair(x,y+1)]=1;mp[make_pair(x,y+2)]=1;
38         mp[make_pair(x-1,y-1)]=1;mp[make_pair(x+1,y-1)]=1;mp[make_pair(x-1,y+1)]=1;mp[make_pair(x+1,y+1)]=1;
39         mp[make_pair(x-2,y-1)]=1;mp[make_pair(x-1,y-2)]=1;mp[make_pair(x-2,y-2)]=1;
40         mp[make_pair(x-1,y+2)]=1;mp[make_pair(x-2,y+1)]=1;mp[make_pair(x-2,y+2)]=1;
41         mp[make_pair(x+1,y-2)]=1;mp[make_pair(x+2,y-1)]=1;mp[make_pair(x+2,y-2)]=1;
42         mp[make_pair(x+1,y+2)]=1;mp[make_pair(x+2,y+1)]=1;mp[make_pair(x+2,y+2)]=1;
43     }
44     int ans=0;
45     for(int i=1;i<=n;i++)
46         for(int j=1;j<=n;j++)
47             if(mp[make_pair(i,j)]==0)
48                 ans++;
49     printf("%d",ans);
50     return 0;
51 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-10-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目背景
  • 题目描述
  • 输入输出格式
  • 输入输出样例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档