洛谷 P1789 【Mc生存】插火把

题目背景

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

题目描述

话说有一天 linyorson 在“我的世界”开了一个 n×n(n≤100) 的方阵,现在他有 mm 个火把和 kk 个萤石,分别放在 (x_1,y_1)...(x_m,y_m)(x1​,y1​)...(xm​,ym​) 和 (o_1,p_1)...(o_k,p_k)(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
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main(){
 4     int n,m,k,i,j,o,p,q,s,ans=0;
 5     cin>>n>>m>>k;
 6     int map[n+5][n+5];
 7     memset(map,0,sizeof(map));
 8     for(i=1;i<=m;i++){
 9         cin>>o>>p;
10         map[o+2][p]=1;
11         map[o][p+2]=1;
12         map[o-2][p]=1;
13         map[o][p-2]=1;
14         map[o+1][p]=1;
15         map[o+1][p+1]=1;
16         map[o+1][p-1]=1;
17         map[o][p+1]=1;
18         map[o][p]=1;
19         map[o][p-1]=1;
20         map[o-1][p]=1;
21         map[o-1][p+1]=1;
22         map[o-1][p-1]=1;
23     }
24     for(i=1;i<=k;i++){
25         cin>>q>>s;
26         map[q-2][s-2]=1;
27         map[q-2][s-1]=1;
28         map[q-2][s]=1;
29         map[q-2][s+1]=1;
30         map[q-2][s+2]=1;
31         map[q-1][s-2]=1;
32         map[q-1][s-1]=1;
33         map[q-1][s]=1;
34         map[q-1][s+1]=1;
35         map[q-1][s+2]=1;
36         map[q][s-2]=1;
37         map[q][s-1]=1;
38         map[q][s]=1;
39         map[q][s+1]=1;
40         map[q][s+2]=1;
41         map[q+1][s-2]=1;
42         map[q+1][s-1]=1;
43         map[q+1][s]=1;
44         map[q+1][s+1]=1;
45         map[q+1][s+2]=1;
46         map[q+2][s-2]=1;
47         map[q+2][s-1]=1;
48         map[q+2][s]=1;
49         map[q+2][s+1]=1;
50         map[q+2][s+2]=1;
51     }
52     for(i=1;i<=n;i++){
53         for(j=1;j<=n;j++){
54             if(map[i][j]==0)ans++;
55         }
56     }
57     cout<<ans;
58     return 0;
59 }
上一篇:游戏


下一篇:table添加横向滚动条