洛谷——P1789 Mc生存插火把

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷——P1789 Mc生存插火把相关的知识,希望对你有一定的参考价值。


P1789 【Mc生存】插火把

题目背景

初一党应该都知道…

题目描述

话说有一天 linyorson 在“我的世界”开了一个 n \\times nn×n(n \\le 100n≤100)的方阵,现在他有 mm 个火把和 kk 个萤石,分别放在 (x_1, y_1) \\sim (x_m, y_m)(x1,y1)∼(x**m,y**m) 和 (o_1, p_1) \\sim (o_k, p_k)(o1,p1)∼(o**k,p**k) 的位置,没有光或没放东西的地方会生成怪物。请问在这个方阵中有几个点会生成怪物?

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

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

萤石:

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

输入格式

输入共 m + k + 1m+k+1 行。
第一行为 n, m, kn,m,k
第 22 到第 m + 1m+1 行分别是火把的位置 x_i, y_ix**i,y**i​。
第 m + 2m+2 到第 m + k + 1m+k+1 行分别是萤石的位置 o_i, p_io**i,p**i

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

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

输出格式

有几个点会生出怪物。

输入输出样例

输入 #1复制

5 1 0
3 3

输出 #1复制

12
#include<bits/stdc++.h>

using namespace std;
long long MAP[101][101],n,m,k,a,b,c,d,ans=0;

int main()


cin>>n>>m>>k;
memset(MAP,0,sizeof(MAP));//将map的值都为0
for(int i=1;i<=m;i++)
cin>>a>>b;
MAP[a][b-2]=1;
MAP[a-1][b-1]=1;
MAP[a][b-1]=1;
MAP[a+1][b-1]=1;

MAP[a-2][b]=1;
MAP[a-1][b]=1;
MAP[a][b]=1;
MAP[a+1][b]=1;
MAP[a+2][b]=1;


MAP[a-1][b+1]=1;
MAP[a][b+1]=1;
MAP[a+1][b+1]=1;
MAP[a][b+2]=1;

for(int i=1;i<=k;i++)
cin>>c>>d;
MAP[c-2][d-2]=1;
MAP[c-1][d-2]=1;
MAP[c][d-2]=1;
MAP[c+1][d-2]=1;
MAP[c+2][d-2]=1;

MAP[c-2][d-1]=1;
MAP[c-1][d-1]=1;
MAP[c][d-1]=1;
MAP[c+1][d-1]=1;
MAP[c+2][d-1]=1;


MAP[c-2][d]=1;
MAP[c-1][d]=1;
MAP[c][d]=1;
MAP[c+1][d]=1;
MAP[c+2][d]=1;


MAP[c-2][d+1]=1;
MAP[c-1][d+1]=1;
MAP[c][d+1]=1;
MAP[c+1][d+1]=1;
MAP[c+2][d+1]=1;


MAP[c-2][d+2]=1;
MAP[c-1][d+2]=1;
MAP[c][d+2]=1;
MAP[c+1][d+2]=1;
MAP[c+2][d+2]=1;



for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(MAP[i][j]==0) ans++;



cout<<ans;
return 0;


以上是关于洛谷——P1789 Mc生存插火把的主要内容,如果未能解决你的问题,请参考以下文章

P1789 Mc生存插火把

洛谷P1789Mc生存插火把 题解

洛谷 P1789 插火把 Python

P1789 Mc生存插火把

手机版我的世界怎么防止迷路

三支火把--- 关于BIOS&UEFI查阅资料网站总结