文章

昨夜圆车

昨夜圆车

题目背景

请选手注意,即使你曾经游玩过与题目中提到的游戏类似的其他游戏,也请你仔细阅读题目描述,否则任何因题目阅读不仔细而导致的失分将不予申诉。

$awa$ 最近在玩一款名叫 “昨夜圆车” 的手机游戏。作为一款优秀的手机游戏,它的游戏数值必然是令人称赞的。最近,她在观看 “皿狠皮车” 的直播间时,不时传出 “超大杯!”“超小杯!” 等声音。这不神奇吗,细看主播原来在拿 Excel 对干员进行 DPS、DPH 和总伤的计算。$awa$ 也想自己算出干员的数值,并看看主播究竟有没有骗人,于是她把这个问题交给了你。


题目描述

概念介绍

  1. 干员,是游戏 “昨夜圆车” 中的我方单位,可以对敌人造成伤害。我们通过 基础攻击力 伤害类型 攻击速度 攻击持续时间 这四个属性描述一个干员。

  2. 敌人,是游戏 “昨夜圆车” 中的敌方单位,不会移动,无限血量,具有 防御力 法抗 两个属性,保证敌人一定在干员的攻击范围内,且只受到来自干员的伤害。

  3. 拐,可以对干员进行增益或者对敌人进行减益的操作(持续时间无限),具体下文描述。

  4. DPS,Damage Per Second,攻击持续时间每秒造成的 平均 伤害。

  5. DPH,Damage Per Hit,每次攻击造成的伤害。

  6. 总伤,攻击持续时间内造成的总伤害。

伤害计算

单次物理伤害,由伤害类型为物理伤害的干员发出,计算公式为

\[DMG_p=\max{(0.05AM, AM-[(1-I_p)*D])}\]

其中:

  • $A$ 为基础攻击力值;
  • $M$ 为最终的攻击力倍率;
  • $I_p$ 为百分比无视防御的值;
  • $D$ 为目标的防御力。

单次法术伤害,由伤害类型为法术伤害的干员发出,计算公式为

\[DMG_a=\max{(0.05AM, 0.01AM*[100-(1-I_p)*D] )}\]

其中:

  • $A$ 为基础攻击力值;
  • $M$ 为最终的攻击力倍率;
  • $I_p$ 为百分比无视法术抗性的值;
  • $D$ 为目标的法术抗性。

攻击速度

实际攻击间隔,即一次攻击后等待的时间,计算公式为

\[T=\dfrac{100s}{\mathrm{clamp}(S,10,600)}\]

其中:

  • $S$ 为攻击速度;
  • $\mathrm{clamp}(S,10,600)$ 代表在 $S\notin [10, 600]$ 时将会输出距离这两端极值中最近的值,否则输出原值。

注:每秒攻击次数 = 1s / 实际攻击间隔。


输入输出

Input

第一行,输入一个数字 $T$,表示进行 $T$ 次询问。

对于每次询问:

第一行,用空格分隔的四个信息,分别是:

基础攻击力 伤害类型 攻击速度 攻击持续时间

其中:

  • 伤害类型 用 $p$ 表示物理伤害,$a$ 表示法术伤害;
  • 攻击持续时间 单位是秒。
  • 数值均为整数。

第二行,拐的数量 $m$。

接下来一行的 $m$ 个字符串(不会出现重复),代表拐的名称。

拐的名称效果
Warfarin干员攻击力 +90%
Aak干员攻击力 +50%,干员攻击速度 +50
Shamare敌人的防御力 -50%
Saria干员造成的的法术伤害 +55%
Eyjafjalla敌人的法术抗性 -25%

注意,攻击力加成为加算,比如 +90%+50% 的 buff 同在时,伤害变为原来的 $1+0.9+0.5=2.4$ 倍。(详见样例2)

第四行,敌人的 防御力法术抗性(整数)。

第五行,皿狠皮车计算的 总伤(保留后的整数)。

现在,需要你计算 DPSDPH总伤

Output

对于每次询问:

第一行,该干员的 DPSDPH(均向下取整,中间用空格分隔)。

第二行,

  • 如果你计算的总伤和皿狠皮车计算的总伤(保留后的整数)不一致,输出 ruozhitutou
  • 如果你计算的总伤和皿狠皮车计算的总伤(保留后的整数)一致,输出 langbaoqinqin

样例

样例输入 #1

1
2
3
4
5
1
100 p 100 1000
0
5 5
100000

样例输出 #1

1
2
100 100
ruozhitutou

样例解释 #1

干员有 100 攻击力,但是敌人的 100 防御力使得干员根本无法破甲,只能有保底的 5% 伤害。100的攻速使得干员能每秒攻击一次。

笨蛋狠宝忽视了敌方的防御力,从而得到了 100000 的总伤,误以为是十万大C,令人哈哈大笑。

样例输入 #2

1
2
3
4
5
6
1
100 p 100 500
2 
Warfarin Aak
100 100
105000

样例输出 #2

1
2
210 140
langbaoqinqin

样例解释 #2

干员有 100 攻击力,但是通过拐使攻击力变为原来的 $1+0.9+0.5=2.4$ 倍。轻松高于敌人的 100 防御力使得干员破甲。攻速同时也得到了提升。

聪明狠宝考虑到了这些,这回是真正的十万大C。


提示

多玩昨夜圆车。

数据规模与约定

对于 20% 的数据,皿狠皮车不会笨笨计算失误,且 总伤 一定能被 攻击次数 整除, 攻击次数 一定能被 攻击持续时间 整除;

对于 40% 的数据,$T = 1$;

对于 60% 的数据,$T \leq 10^3$;

对于 100% 的数据,$1\leq T \leq 10^6$。

输入的数值均为整数。

输出的数值保留整数(向下取整)。

保证不会因为 double 的使用而造成精度误差。

注意

干员进行的攻击次数显然是整数。

DPS 描述的是攻击持续时间内的每秒平均伤害。

请注意整数运算造成的精度损失。

题目输入输出量较大,请使用较快的输入/输出方式。

本文由作者按照 CC BY 4.0 进行授权