P1789 【Mc生存】插火把

题目背景

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

题目描述

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

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

|暗|暗| 光 |暗|暗|
|暗|光| 光 |光|暗|
|光|光|火把|光|光|
|暗|光| 光 |光|暗|
|暗|暗| 光 |暗|暗|

萤石:

|光|光| 光 |光|光|
|光|光| 光 |光|光|
|光|光|萤石|光|光|
|光|光| 光 |光|光|

|光|光| 光 |光|光|

输入输出格式

输入格式:

输入共m+k+1行。

第一行为n,m,k。

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

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

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

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

输出格式:

有几个点会生出怪物。

输入输出样例

输入样例#1:

5 1 0
3 3

输出样例#1:

12

这道题没有说n的范围

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

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

 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 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python中文社区

Python文档精要研读系列:hash函数

hash(object) Return the hash value of the object (if it has one). Hash values ar...

266100
来自专栏用户2442861的专栏

MATLAB 中有哪些命令,让人相见恨晚?

提问都说了是命令,大家回答那么多函数干什么... 我来给一个超级大杀器 在命令行敲入 dbstop if error

51110
来自专栏小樱的经验随笔

详解斯坦纳点及斯坦纳树及模版归纳总结

①什么是斯坦纳点?   假设原来已经给定了个点,库朗等指出需要引进的点数至多为,此种点称为斯坦纳点。过每一斯坦纳点,至多有三条边通过。若为三条边,则它们两两交成...

92760
来自专栏菩提树下的杨过

“AS3.0高级动画编程”学习:第四章 寻路(AStar/A星/A*)算法 (中)

上一部分提到了节点(Node),代价(Cost),估价公式等基本概念,有了这些知识铺垫 就可以正式开启寻路之旅了! ? 如上图,这是一个5行8列的网格,黄色节点...

27360
来自专栏C语言及其他语言

【每日一题】1426: [蓝桥杯][历届试题]九宫重排

如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着。与空格子相邻的格子中的卡片可以移动到空格中。经过若干次移动,可以形成第二个图所示的局面...

12430
来自专栏数据结构与算法

洛谷P1730 最小密度路径(floyd)

很显然的一个dp方程\(f[i][j][k][l]\)表示从\(i\)到\(j\)经过了\(k\)条边的最小权值

9930
来自专栏tkokof 的技术,小趣及杂念

HGE系列之五 管中窥豹(基础类别)

继上次我们编写了那个小程序之后,想必大家对于HGE的认识都有了进一步的提高,那么现在,我想则是时候来一番“管中窥豹”,睹一睹HGE的源码实现了 :)而相应的源...

10610
来自专栏数据结构与算法

1893. [国家集训队2011]等差子序列(bitset)

★★   输入文件:nt2011_sequence.in   输出文件:nt2011_sequence.out 简单对比 时间限制:0.3 s   内存限制:5...

355100
来自专栏python爬虫实战之路

使用bloomfilter修改scrapy-redis去重

这篇文章憋的太久了,断断续续战线拉了好长。这个也是属于喜马拉雅那个项目的一部分,还要再忙一阵子。请大家见谅。

23920
来自专栏灯塔大数据

每周学点大数据 | No.30前序计数

No.30期 前序计数 Mr. 王:我们再来说说父子关系判定的应用。前序计数是一种非常常用的对树进行处理的方法。前序计数实现的就是对各个节点按照其前序遍...

34770

扫码关注云+社区

领取腾讯云代金券