洛谷——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生存插火把的主要内容,如果未能解决你的问题,请参考以下文章