zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    iOS面试题及答案大总结
    iOS 画音频波形曲线 根据音频数据版
    iPhone-获取网络数据或者路径的文件名
    python语言使用yaml 管理selenium元素
    出现事故后我们怎么复盘分析
    如何提升测试质量,减少漏测
    robotframework环境搭建
    如何做ui自动化---步骤详解
    Jenkins报错Caused: java.io.IOException: Cannot run program "sh" (in directory "D:JenkinsJenkins_homeworkspacejmeter_test"): CreateProcess error=2, 系统找不到指定的文件。
    使用jmeter使用Jenkins发送自定义消息内容
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/7693888.html
Copyright © 2011-2022 走看看