P1789 【Mc生存】插火把

题目背景

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

题目描述

话说有一天 linyorson 在“我的世界”开了一个 \(n\times n(n\le 100)\) 的方阵,现在他有 \(m\) 个火把和 \(k\) 个萤石,分别放在 \((x_1,y_1)...(x_m,y_m)\) 和 \((o_1,p_1)...(o_k,p_k)\) 的位置,没有光或没放东西的地方会生成怪物。请问在这个方阵中有几个点会生成怪物?

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

【思路】

模拟

很暴力的模拟

【闲话】

如果这片题解过掉的话

那就是我通过的第100篇题解了

纪念一下,所以我还是选择MC生存系列的题来交我的第100篇题解

毕竟我从12年左右就开始玩MC了

很有感情

【题目大意】

给你一块nn的地和萤石、火把若干

萤石可以照亮以自身为中心5
5的矩阵

火把可以照亮上下左右各两格。

四个方向对角线上各一格

求没法被照亮的方块块数

【题目分析】

读入数据

因为只有萤石和火把这两种可能

所以用if判断一下放置的是什么就好了

然后如果是火把

那就将他的上下左右的两个和对角线四个方向上各一格都标为亮了

如果是萤石

那就将以他为中心的5*5的矩阵上面每一个方块都标为亮的

标记的话可以用for循环来标记

也可以直接if标记

【注意】

放置了火把和萤石的方块是亮的

不会生成怪物。

【完整代码】

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n,m,k;//n为边长,m为火把,k为萤石
cin>>n>>m>>k;
int owo,qwq;
int awa,pwp;
int a[n+5][n+5];
memset(a,0,sizeof(a));
for(int i=1;i<=m;++i)//火把循环,标为1代表火把
{
cin>>owo>>qwq;
a[owo][qwq]=1;
}
for(int j=1;j<=k;++j)//萤石循环,标为2代表萤石
{
cin>>awa>>pwp;
a[awa][pwp]=2;
}
for(int l=1;l<=n;++l)
{
for(int u=1;u<=n;++u)
{
if(a[l][u]==1)
{
if(a[l-1][u]==0)a[l-1][u]=3;//3代表有光但不是火把也不是萤石
if(a[l-2][u]==0)a[l-2][u]=3;
if(a[l+1][u]==0)a[l+1][u]=3;
if(a[l+2][u]==0)a[l+2][u]=3;
if(a[l][u+1]==0)a[l][u+1]=3;
if(a[l][u+2]==0)a[l][u+2]=3;
if(a[l][u-2]==0)a[l][u-2]=3;
if(a[l][u-1]==0)a[l][u-1]=3;
if(a[l-1][u-1]==0)a[l-1][u-1]=3;
if(a[l+1][u+1]==0)a[l+1][u+1]=3;
if(a[l-1][u+1]==0)a[l-1][u+1]=3;
if(a[l+1][u-1]==0)a[l+1][u-1]=3;
}
if(a[l][u]==2)
{
if(a[l-1][u]==0)a[l-1][u]=3;//3代表有光但不是火把也不是萤石
if(a[l-1][u+1]==0)a[l-1][u+1]=3;
if(a[l-1][u-1]==0)a[l-1][u-1]=3;
if(a[l-1][u+2]==0)a[l-1][u+2]=3;
if(a[l-1][u-2]==0)a[l-1][u-2]=3;
if(a[l-2][u+2]==0)a[l-2][u+2]=3;
if(a[l-2][u-2]==0)a[l-2][u-2]=3;
if(a[l-2][u-1]==0)a[l-2][u-1]=3;
if(a[l-2][u+1]==0)a[l-2][u+1]=3;
if(a[l-2][u-1]==0)a[l-2][u-1]=3;
if(a[l-2][u]==0)a[l-2][u]=3;
if(a[l+1][u-2]==0)a[l+1][u-2]=3;
if(a[l+1][u+2]==0)a[l+1][u+2]=3;
if(a[l+1][u-1]==0)a[l+1][u-1]=3;
if(a[l+1][u+1]==0)a[l+1][u+1]=3;
if(a[l+1][u]==0)a[l+1][u]=3;
if(a[l+2][u+1]==0)a[l+2][u+1]=3;
if(a[l+2][u-1]==0)a[l+2][u-1]=3;
if(a[l+2][u+2]==0)a[l+2][u+2]=3;
if(a[l+2][u-2]==0)a[l+2][u-2]=3;
if(a[l+2][u]==0)a[l+2][u]=3;
if(a[l][u-1]==0)a[l][u-1]=3;
if(a[l][u-2]==0)a[l][u-2]=3;
if(a[l][l+2]==0)a[l][l+2]=3;
if(a[l][u+1]==0)a[l][u+1]=3;
}
}
}
int js=0;
for(int p=1;p<=n;++p)
{
for(int o=1;o<=n;++o)
{
if(a[p][o]==0)
js++;
}
}
cout<<js<<endl;
return 0;
}

第100篇在洛谷上面通过的题解,

爱我MC

爱我OI

洛谷 P1789 【Mc生存】插火把 题解的更多相关文章

  1. 洛谷P1854 花店橱窗布置 分析+题解代码

    洛谷P1854 花店橱窗布置 分析+题解代码 蒟蒻的第一道提高+/省选-,纪念一下. 题目描述: 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定 ...

  2. HAOI2006 (洛谷P2341)受欢迎的牛 题解

    HAOI2006 (洛谷P2341)受欢迎的牛 题解 题目描述 友情链接原题 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之 ...

  3. 洛谷P3412 仓鼠找$Sugar\ II$题解(期望+统计论?)

    洛谷P3412 仓鼠找\(Sugar\ II\)题解(期望+统计论?) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327573 原题链接:洛谷P3412 ...

  4. 洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速$dp\&Floyd$)

    洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速\(dp\&Floyd\)) 标签:题解 阅读体验:https://zybuluo.com/Junl ...

  5. BZOJ4946 & 洛谷3826 & UOJ318:[NOI2017]蔬菜——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4946 https://www.luogu.org/problemnew/show/P3826 ht ...

  6. 洛谷1578:[WC2002]奶牛浴场——题解

    https://www.luogu.org/problemnew/show/P1578#sub 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建 ...

  7. 洛谷P2460 [SDOI2007]科比的比赛(题解)(贪心+搜索)

    科比的比赛(题解)(贪心+搜索) 标签:算法--贪心 阅读体验:https://zybuluo.com/Junlier/note/1301158 贪心+搜索 洛谷题目:P2460 [SDOI2007] ...

  8. 洛谷 P1146 【硬币翻转】题解

    很久很久之前做过的一道题 翻n-1枚硬币,就是有一枚不翻,也可以理解为翻一枚 直接上程序,看程序说话 #include<iostream> using namespace std; ; b ...

  9. 洛谷P1972 [SDOI2009]HH的项链 题解

    [SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不 ...

随机推荐

  1. 示例:WPF开发的简单ObjectProperyForm用来绑定实体表单

    原文:示例:WPF开发的简单ObjectProperyForm用来绑定实体表单 一.目的:自定义控件,用来直接绑定实体数据,简化开发周期 二.实现: 1.绑定实体对象 2.通过特性显示属性名称 3.通 ...

  2. EasyUI datagrid-export 将datagrid的数据导出至Excel-解决科学计数法

    通过EasyUI datagrid-export.js 将datagrid的数据导出至Excel的时候,如果有类似身份证一样很长的数字,需要在后台返回数据的时候在数字前增加一个 “ ”,将数字转为字符 ...

  3. 解决老大难疑惑:指针 vs 引用

    ▶疑问描述 1.  引用reference的本质: 常指针 ——> 什么时候用指针?= 就按Java中的引用变量那样用? ——> 什么时候用引用?  ①函数的入参/返回值时   ②T&am ...

  4. js设置全局变量与读取全局变量

    方法1: 设置: var a = 1; 读取: a window.a window['a'] 方法2: 设置: window.b=2; 读取: b window.b window['b'] 方法3: ...

  5. babel安装及使用

    安装babel npm install babel-cli -g 配置babel babel是用过插件或者预设来编译代码的 新建.babelrc文件 文件中输入一下内容 { "presets ...

  6. rem适配移动端

    一.屏幕宽度 / 设计稿宽度 *100 来设置根元素的 font-size   10px = 0.10rem (function (doc, win) { var docEl = doc.docume ...

  7. 15、vue项目封装axios并访问接口

    1.在src下新建util文件夹,在util下新建request.js文件: 封装axios: import axios from 'axios' import QS from 'qs'; // im ...

  8. Float型 与 Double型数据的存储方式

    先来了解一下浮点数在计算机中是以什么形式存储的 首先要知道计算机能懂得只有0和1,每一个0和1都占一个位 bit (比特)(Binary Digits):存放一位二进制数,最小的存储单位. 而对于存放 ...

  9. Springboot自动化部署到docker以及logback按天生成日志

    Dockerfile FROM java:8 VOLUME /tmp ADD maven/sms-0.0.1-SNAPSHOT.jar app.jar RUN sh -c 'touch /app.ja ...

  10. android中如何实现UI的实时更新---需要考虑电量和流量

    1.如果不考虑电量和流量的话,只需要在对应的activity里面继承Runnable,在run方法里面写一个while死循环,调用接口返回数据,如果数据发生了变化,就立即更新UI 2.需要考虑电量的话 ...