#P5006. [yLOI2018] 大美江湖
[yLOI2018] 大美江湖
题目背景
细雪飘落长街,枫叶红透又一年。
不只为故友流连,其实我也恋长安。
听门外足音慢,依稀见旧时容颜。
故事几经悲欢,结局都与你有关。
——银临《大美江湖》
本题原名《空间复杂度》。
题目描述
扶苏听着《大美江湖》,在剑三里控制着他的人物炮姐来到了长安。
长安城中有一个任务,需要扶苏进入地下的机关道,机关道是的地图一个 行 列的矩形方格图,每个方格内部都有一些怪物或者药水。扶苏操控着炮姐在机关道中游荡。有些时候他希望问问你他的角色一扶苏一有多少攻击力、防御力以及丢失了多少血量。
地图中共有三种药水和一种怪物,分别用字符 R
,Q
,Y
,M
代表。其中:
- 字符
R
代表生命药水,可以减少炮姐丢失的 点 血量 。如果本身损失的 不大于 ,则损失的血量会变成 。 - 字符
Q
代表力量药水,可以增加炮姐 点攻击力 。 - 字符
Y
代表防御药水,可以增加炮姐 点防御力 。 - 字符
M
代表怪物,会对炮姐造成伤害。
每只怪物都有三个属性,分别是血量 ,攻击力 ,防御力 。为了降低验题人工作量题目难度,所有怪物的属性都是相同的。
一旦走到怪物格,遭遇战将开始。扶苏一定会打死怪物,但是怪物也会对扶苏造成一定的伤害。具体的,怪物对扶苏造成的伤害为
$$\max(1, \left\lceil \frac{HP_0}{\max(1, ST - DE_0)}\right\rceil \times \max(1, ST_0 - DE)) $$其中 代表取 和 中较大的数, 代表不小于 的最小整数。下标为 的值代表怪物的参数,不带下标值的为角色的参数。
你会收到 次操作,每次操作要么是一次查询,要么是一次移动。
对于移动,你会再获得一个数字参数,这个参数只可能是 其中的一个,代表炮姐向地图的左/右/上/下移动。向上移动代表角色所在的行数减一,列数不变,其他方向类似。
对于查询,需要你输出炮姐损失了多少血量,以及当前的攻击力和防御力分别是多少。
请注意,如果多次进入同一个格子,那么格子上的药水会被重复拾取,小怪也会再次出现。即你可以认为离开一个格子以后该格子会恢复原状。
请注意,如果初始位置有怪物,也不会发生战斗,如果初始位置有药水,也不会将之捡拾。
输入格式
每个测试点有且仅有一组测试数据。
输入的第一行是两个用空格隔开的整数,代表地图的行数 和列数 。
第 到第 行,每行有一个长度为 的字符串,第 行的第 个字符 代表第 行第 列的方格中物品/生物。特别的,若 为一个字符 .
,则意味着该处没有任何东西,但是可以通行。
第 行有三个用空格隔开的整数,分别代表怪物的血量 ,攻击力 和防御力 。
第 行有两个整数,分别代表角色初始所在的行数 和列数 。
第 行有两个用空格隔开的整数,代表角色初始的攻击力 和防御力 。
第 行是一个整数,代表操作的次数 。
第 到第 行,每行首先有一个整数 ,代表本次操作的类型。
- 若 ,则本次操作是一次查询操作。
- 若 ,则本次操作是一次移动,一个空格后会有一个整数 ,作为移动的参数。
输出格式
对于每次查询操作,输出一行三个用单个空格隔开的整数,分别代表角色损失的血量 ,以及当前的攻击力 和防御力 。
5 5
MMMMM
RRRRR
QQQQQ
YYYYY
.....
5 5 5
5 1
10 10
8
2 3
1
2 3
2 3
2 3
1
2 2
1
0 10 15
1 15 15
2 15 15
提示
数据规模与约定
测试点编号 | 特殊性质 | |||
---|---|---|---|---|
无 | ||||
保证 | ||||
保证地图中没有怪物 | ||||
无 |
对于全部的测试点,保证:
- ,。
- 。
- ,。
- 只可能是
.
,R
,Q
,Y
,M
其中之一。 - 保证人物移动过程中的任何时刻,所在行数都是不大于 的正整数,所在列数都是不大于 的正整数。