LuoguP5006 [yLOI2018] 大美江湖 题解
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}\) 只有可能是
.
,R
,Q
,Y
,M
五个字符之一。 - 人物不会跑到地图外面。
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
捡到药水的情况我已经在上面讲过了,所以接下来就是考虑打怪时的情况。这里直接给了个式子给你:
\]
你就直接按照这个式子算就好了。注意在使用 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] 大美江湖 题解的更多相关文章
- 6.20校内考试整理——大美江湖&&腐草为萤&&锦鲤抄题解
先安利一下题目作者:一扶苏一 先看第一题: 这道题就是一道简单的模拟题,只要不管一开始的位置,模拟移动与格子对应的触发事件就行了.话不多说,看代码: #include<iostream> ...
- 模拟赛DAY1 T1大美江湖
这就是一个模拟题,注意1234分别对应左右上下横坐标和纵坐标的判断就好了 题解: 需要注意的是,向上取整ceil函数是对于一个double值返回一个double值,也就是说在ceil里面的类型一定要是 ...
- 2019.6.20 校内测试 NOIP模拟 Day 1 分析+题解
这次是zay神仙给我们出的NOIP模拟题,不得不说好难啊QwQ,又倒数了~ T1 大美江湖 这个题是一个简单的模拟题. ----zay 唯一的坑点就是打怪的时候计算向上取整时,如果用ceil函数一 ...
- 【6.20校内test】
反正考的不是很好吧,赶脚炸了啊qwq 然后这两天一直在忙一些神奇的事情,所以没有整理完 手动@water_lift T1:大美江湖: [题目背景] 细雪飘落长街,枫叶红透又一年 不只为故友流连,其实我 ...
- 校内考试之zay与银临(day1)
T1大美江湖(洛谷P5006) zayの题解: 这个题的本质是模拟 不过有卡ceil的地方 ceil是对一个double进行向上取整,而对于int/int来说,返回值是int 举个生动的栗子 ceil ...
- NIOP 膜你题
NOIp膜你题 Day1 duliu 出题人:ZAY 1.大美江湖(mzq.cpp/c) [题目背景] 细雪飘落长街,枫叶红透又一年不只为故友流连,其实我也恋长安听门外足音慢,依稀见旧时容颜 ...
- 【码在江湖】前端少侠的json故事(上)日月第一击
日月第一击 这是我前端生涯第一次和后台对接,其经历真是苦不堪言,多次绝处逢生,柳暗花明,可就是迟迟见不到那条村子.当然,最后我还是完成了这次对接.下面来聊一聊我这白痴一般的经历. 序章 话说天下大势, ...
- 【码在江湖】前端少侠的json故事(下):jsonp的应用
jsonp的应用 话说天下大势,分久必合,合久必分,代码江湖自进入21世纪以来,前后端分离成为了大势所趋,代码分工更为精细,更为深入,而正所谓码在江湖,身不由己,为了更好的实现需求,程序猿们必须不断学 ...
- 【码在江湖】前端少侠的json故事(中)ng的json
ng的json 正所谓"人在江湖,身不由己",在开发之路上前端少侠dk遇到过种种困难,尤其在与后端进行数据对接的时候,不得不逼迫自己以极快的速度去学习和掌握一些奇招怪式,正当他以为 ...
随机推荐
- [USACO17FEB]Why Did the Cow Cross the Road III P
[USACO17FEB]Why Did the Cow Cross the Road III P 考虑我们对每种颜色记录这样一个信息 \((x,y,z)\),即左边出现的位置,右边出现的位置,该颜色. ...
- Codeforces 848C Goodbye Souvenir(CDQ 分治)
题面传送门 考虑记录每个点的前驱 \(pre_x\),显然答案为 \(\sum\limits_{i=l}^{r} i-pre_i (pre_i \geq l)\) 我们建立一个平面直角坐标系,\(x\ ...
- Codeforces 650D - Zip-line(树状数组)
Codeforces 题目传送门 & 洛谷题目传送门 我怕不是个 nt--一开始忽略了"询问独立"这个条件--然后就一直在想有什么办法维护全局 LIS--心态爆炸 首先离散 ...
- 洛谷 P3781 - [SDOI2017]切树游戏(动态 DP+FWT)
洛谷题面传送门 SDOI 2017 R2 D1 T3,nb tea %%% 讲个笑话,最近我在学动态 dp,wjz 在学 FWT,而我们刚好在同一天做到了这道题,而这道题刚好又是 FWT+动态 dp ...
- 2019java面试
1.面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注 ...
- SM 国密算法踩坑指南
各位,好久不见~ 最近接手网联的国密改造项目,由于对国密算法比较陌生,前期碰到了一系列国密算法加解密的问题. 所以这次总结一下,分享这个过程遇到的问题,希望帮到大家. 国密 什么是国密算法? 国密就是 ...
- 日常Java 2021/9/27
题目: 在某个比赛中,有6个评委为参赛的选手打分,分数为1-100的随机整数.选手的最后得分为:除去最高分和最低分后的4个评委分值的平均值(不考虑小数部分). package m; import ja ...
- JavaScript设计模式,单例模式!
单例设计模式:保证一个类仅有一个实例,并且提供一个访问它的全局访问点.有些对象只需要一个,这时可用单例模式. 传统的单例模式 和new 创建对象的调用不一样 调用者要调用xxx.getInstance ...
- 从源码看Thread&ThreadLocal&ThreadLocalMap的关系与原理
1.三者的之间的关系 ThreadLocalMap是Thread类的成员变量threadLocals,一个线程拥有一个ThreadLocalMap,一个ThreadLocalMap可以有多个Threa ...
- Oracle—表、约束、索引、表空间、分区、序列、统计信息
表.约束.索引.表空间.分区.序列.统计信息 一.表及其操作 1.创建表 create table 表名 ( 字段名1 字段类型 默认值 是否为空 , 字段名2 字段类型 默认值 是否为空, 字段名3 ...