Content

题意实在是太过复杂了,因此请回到题面查看。

Data Range

本部分和 Solution 部分变量的含义同题面。

  • \(1\leqslant n,m\leqslant 100,0\leqslant q\leqslant 10^4,0\leqslant ST_0,DE_0,HP_0,ST,DE\leqslant 100,1\leqslant op\leqslant 2,1\leqslant d\leqslant 4\)。
  • \(C_{i,j}\) 只有可能是 .RQYM 五个字符之一。
  • 人物不会跑到地图外面。

Solution

不知道为什么被扶咕咕给改了题面……所以又重新做了一遍。

而且为什么一下扶苏一下炮姐啊,好混乱啊,搞得我都弄不清主人公到底是谁了。

分部分来讲:

Part 1 Test Data 1

因为 \(q=0\),也就是说没有提问,因此,你不需要输出任何东西就可以骗到这道题目的 \(10\) 分。

这部分分可以说对于萌新非常非常友好。

Part 2 Test Data 4,5

人物只固定在一个点上面游走,因此每次询问的答案一定分别是 \(0,ST\) 和 \(DE\)。输出 \(q\) 次即可拿到 \(20\) 分。

这部分分也可以说对于萌新是非常友好的。因此,我可以说,只要你会语法,这道题目至少可以拿到 \(30\) 分。

Part 3 Test Data 6~8

开始进入我们的正题了。由于这一部分没有怪物,所以我们只需要讨论捡到生命药水、力量药水和防御药水时的情况。

在此之前还需要考虑移动的情况,原来的题面当中是直接输入一个字符然后依此判断行动方向。而这里直接输入数字的话就很简单了,我们可以直接开一个数组,然后输入时将其作为数组的下标,就可以直接加进去当前位置的坐标里面去了。

再具体分析捡到三种药水的情况:

  • 生命药水:变化就是 \(HP\leftarrow\max(0,HP-10)\)。
  • 力量药水:变化就是 \(ST\leftarrow ST+5\)。
  • 防御药水:变化就是 \(DE\leftarrow DE+5\)。

由于捡到药水之后药水不会消失,因此不需要考虑是否已经捡到的情况。

Part 4 Others

捡到药水的情况我已经在上面讲过了,所以接下来就是考虑打怪时的情况。这里直接给了个式子给你:

\[\max(1,\left\lceil\dfrac{HP_0}{\max(1,ST-DE_0)}\right\rceil\times\max(1,ST_0-DE))
\]

你就直接按照这个式子算就好了。注意在使用 cmath 库里面的 ceil 函数时,不能够直接除,要先把被除数或者除数转换成 double 类型,然后再去除,最后向上取整之后用整型变量存储就好。

上面的所有变化用变量存储一下,询问的时候就直接输出就好了。

所以这道题目就做完了,还算是一道比较小清新的模拟题。

Code

const int dx[5] = {0, 0, 0, -1, 1};
const int dy[5] = {0, -1, 1, 0, 0};
struct misaka {
int hp0, st0, de0, curx, cury;
}fusu;
int n, m, hp, st, de, q;
char a[107][107]; int main() {
n = Rint, m = Rint;
F(i, 1, n) scanf("%s", a[i] + 1);
hp = Rint, st = Rint, de = Rint, fusu.curx = Rint, fusu.cury = Rint, fusu.st0 = Rint, fusu.de0 = Rint, q = Rint;
while(q--) {
int op = Rint;
if(op == 1) printf("%d %d %d\n", fusu.hp0, fusu.st0, fusu.de0);
else {
int d = Rint;
fusu.curx += dx[d], fusu.cury += dy[d];
if(a[fusu.curx][fusu.cury] == 'R') fusu.hp0 = max(0, fusu.hp0 - 10);
else if(a[fusu.curx][fusu.cury] == 'Q') fusu.st0 += 5;
else if(a[fusu.curx][fusu.cury] == 'Y') fusu.de0 += 5;
else if(a[fusu.curx][fusu.cury] == 'M') fusu.hp0 += max(1, (int)ceil(hp * 1.0 / (max(1, fusu.st0 - de) * 1.0)) * max(1, st - fusu.de0));
}
}
return 0;
}

LuoguP5006 [yLOI2018] 大美江湖 题解的更多相关文章

  1. 6.20校内考试整理——大美江湖&&腐草为萤&&锦鲤抄题解

    先安利一下题目作者:一扶苏一 先看第一题: 这道题就是一道简单的模拟题,只要不管一开始的位置,模拟移动与格子对应的触发事件就行了.话不多说,看代码: #include<iostream> ...

  2. 模拟赛DAY1 T1大美江湖

    这就是一个模拟题,注意1234分别对应左右上下横坐标和纵坐标的判断就好了 题解: 需要注意的是,向上取整ceil函数是对于一个double值返回一个double值,也就是说在ceil里面的类型一定要是 ...

  3. 2019.6.20 校内测试 NOIP模拟 Day 1 分析+题解

    这次是zay神仙给我们出的NOIP模拟题,不得不说好难啊QwQ,又倒数了~ T1 大美江湖 这个题是一个简单的模拟题.   ----zay 唯一的坑点就是打怪的时候计算向上取整时,如果用ceil函数一 ...

  4. 【6.20校内test】

    反正考的不是很好吧,赶脚炸了啊qwq 然后这两天一直在忙一些神奇的事情,所以没有整理完 手动@water_lift T1:大美江湖: [题目背景] 细雪飘落长街,枫叶红透又一年 不只为故友流连,其实我 ...

  5. 校内考试之zay与银临(day1)

    T1大美江湖(洛谷P5006) zayの题解: 这个题的本质是模拟 不过有卡ceil的地方 ceil是对一个double进行向上取整,而对于int/int来说,返回值是int 举个生动的栗子 ceil ...

  6. NIOP 膜你题

    NOIp膜你题   Day1 duliu 出题人:ZAY    1.大美江湖(mzq.cpp/c) [题目背景] 细雪飘落长街,枫叶红透又一年不只为故友流连,其实我也恋长安听门外足音慢,依稀见旧时容颜 ...

  7. 【码在江湖】前端少侠的json故事(上)日月第一击

    日月第一击 这是我前端生涯第一次和后台对接,其经历真是苦不堪言,多次绝处逢生,柳暗花明,可就是迟迟见不到那条村子.当然,最后我还是完成了这次对接.下面来聊一聊我这白痴一般的经历. 序章 话说天下大势, ...

  8. 【码在江湖】前端少侠的json故事(下):jsonp的应用

    jsonp的应用 话说天下大势,分久必合,合久必分,代码江湖自进入21世纪以来,前后端分离成为了大势所趋,代码分工更为精细,更为深入,而正所谓码在江湖,身不由己,为了更好的实现需求,程序猿们必须不断学 ...

  9. 【码在江湖】前端少侠的json故事(中)ng的json

    ng的json 正所谓"人在江湖,身不由己",在开发之路上前端少侠dk遇到过种种困难,尤其在与后端进行数据对接的时候,不得不逼迫自己以极快的速度去学习和掌握一些奇招怪式,正当他以为 ...

随机推荐

  1. 【Tool】Node.js 安装

    Node.js 安装 2019-07-29  14:56:14  by冲冲 1. 说明 电脑使用node.js存在两种方式: ① 第一种,下载(.exe)到本地电脑,不需要安装,下载后点击 node. ...

  2. springboot 配置多数据源实例代码(分包方式)

    目录 1.数据库 2.pom与yml 2.1.pom中的依赖部分 2.2.yml数据库配置部分 3.数据源配置类 DataSourceConfig 3.1.DataSourceConfig1.java ...

  3. 洛谷 P4621 - [COCI2012-2013#6] BAKTERIJE(exCRT)

    洛谷题面传送门 发篇正常点的题解. 首先对于这样的题暴力枚举肯定是不行的,因为最小时间显然可能达到 \((4nm)^5\approx 10^{20}\),就算数据很难卡到这个上界,构造出一些使你暴力超 ...

  4. Bedtools genomecov 计算覆盖度

    简单说明: 从2.28.0版开始,bedtools使用htslib库支持CRAM格式 除了BAM文件,bedtools默认所有的输入文件都以TAB键分割 除非使用-sorted选项,bedtools默 ...

  5. eggNOG 5.0数据库介绍

    目录 1. eggNOG简介 2. eggNOG-Mapper注释原理 3. eggNOG 5.0数据资源 4. eggNOG-Mapper使用 5. NOG.KOG.COG.KEGG.GO区别? 1 ...

  6. 开始读 Go 源码了

    原文链接: 开始读 Go 源码了 学完 Go 的基础知识已经有一段时间了,那么接下来应该学什么呢?有几个方向可以考虑,比如说 Web 开发,网络编程等. 在下一阶段的学习之前,写了一个开源项目|Go ...

  7. 移动测试(web和app)及app测试实战

    移动测试androidiosapp上 原生GUI 混合应用H5 web端兼容性浏览器测试需要的内容:safari 浏览器edge浏览器ie11浏览器firefox浏览器chrome浏览器 国内360浏 ...

  8. 在Telegraf上报的监控数据中添加固定的标签列

    Telegraf作为InfluxData提供的TICK工具栈(由Telegraf, InfluxDB, Chronograf, Kapacitor四个工具的首字母组成)中收集监控数据的一环,功能非常强 ...

  9. 记一次 .NET 某化妆品 webapi 卡死分析

    一:背景 1. 讲故事 10月份星球里的一位老朋友找到我,说他们公司的程序在一个网红直播带货下给弄得无响应了,无响应期间有大量的 RabbitMQ 超时,寻求如何找到根源,聊天截图我就不发了. 既然无 ...

  10. pow()是如何实现的?

    如1.5 ** 2.5,如何计算?似乎是这样的: 1. cmath calculates pow(a,b) by performing exp(b * log(a)). stackoverflow 2 ...