你正在玩一款角色扮演游戏(RPG),这可以说是 2007 年最好的国产 RPG。你已经打到了最终战。你想要尽快获胜。你知道我在说什么吗?
对于不熟悉该游戏的参赛者:我们很快会简要介绍战斗系统以及最后一场战斗中涉及的角色。
对于太熟悉该游戏的参赛者:我们简化和/或更改了本题的规则和事实。如果你对此感到不快,我们深表歉意。
图:最终战
上面的截图让你对战斗系统和角色有了一些了解,可以总结如下:
- 你有 4 位英雄:云天河(YTH)、韩菱纱(HLS)、柳梦璃(LML)和慕容紫英(MRZY)。在战斗开始前,你需要选择恰好三位英雄并以某种顺序排列。我们将第 1、第 2 和第 3 位英雄分别称为 H1、H2 和 H3。在上面的截图中,H1 是 YTH,H2 是 HLS,H3 是 LML。(对紫英的粉丝们表示抱歉!)
- 有两个 Boss:玄霄(XX)和夙瑶(SY),都在截图的后方。
- 这场战斗的目标是击败 SY。在本题中,你可以假设 XX 是不死的,尽管在真实游戏中击败他是可能的。
本题的关键在于理解“半”回合制战斗系统。看到屏幕顶部的“进度条”了吗?每个英雄在进度条上都有一个小进度球(浅蓝色),上方有一个图标。同样,每个 Boss 也有一个球(红色),但图标在球的下方。战斗开始时,所有进度球都从进度条的左侧开始移动。当一个球到达右侧时,相应的角色就可以行动。如果超过一个角色可以行动,他们将按照以下优先级顺序依次行动:YTH、HLS、LML、MRZY、XX、SY。当一个角色正在行动时,所有进度球停止移动。角色完成动作后,他/她的进度球会重置到进度条的左侧。当没有人正在行动时,所有进度球同时向右移动(但速度可能不同,见下文)。
在本题中,每个角色有 4 个主要属性:精、气、神、速。
- 精(Jing)意味着“生命值”。当角色的精达到零或负数时,他/她就被击败了。角色的最大精由参数
maxjing表示。 - 气(Qi)意味着“活力”。它用于特殊技能攻击。当气不足时,某些特殊技能攻击无法执行。角色的最大气始终为 100。
- 神(Shen)意味着“精神”。它用于仙术(类似于魔法,但更神奇)。当神不足时,某些仙术无法执行。角色的最大神由参数
maxshen表示。 - 速(Su)意味着“速度”。它影响角色进度球的移动速度。速始终是一个小于 5 的正整数。如果一个角色的速为 $x$,他/她的进度球从进度条左侧移动到右侧需要 $5-x$ 个单位时间。角色的速(在战斗中从不改变)由参数
su表示。
为简单起见,你可以假设 XX 和 SY 使用相同的策略:
- 在他/她的第 $(4n+1)$ 次行动中($n=0,1,2,\dots$),对 H1 发起武器攻击。
- 在他/她的第 $(4n+2)$ 次行动中($n=0,1,2,\dots$),对 H2 发起武器攻击。
- 在他/她的第 $(4n+3)$ 次行动中($n=0,1,2,\dots$),对 H3 发起武器攻击。
- 在他/她的第 $(4n+4)$ 次行动中($n=0,1,2,\dots$),对所有英雄发起特殊技能攻击。
现在我们为每个英雄引入另外四个参数。前两个 d1x 和 d2x 分别是英雄在 XX 的武器攻击和特殊技能攻击中所受的伤害。对于 SY 的攻击,我们类似地定义 d1s 和 d2s。
你非常疲惫,所以不想浪费时间设计复杂的战术。当一个英雄即将行动时,你只考虑以下动作:
- 对 XX 或 SY 发起物理武器攻击(不能同时攻击两者)。但要小心,SY 被剑阵包围(见截图),所以对她进行武器攻击会伤害攻击者自己。攻击者受到的“反弹伤害”与 SY 受到的“物理伤害”相同。攻击 XX(是的,如果你愿意,可以这样做)不会受到物理反弹伤害。
- 使用仙术恢复精。为了简化思考,你决定不恢复其他英雄的精。在本题中,你唯一可以使用的仙术叫做“雨润”,它恢复
yurun_jing点精(如果结果超过他/她的最大精,则减少到最大值)并消耗yurun_shen点神。 - 使用物品恢复神。为了简化思考,你决定不恢复其他英雄的神。在本题中,你唯一可以使用的物品叫做“鼠儿果”,它恢复
shuerguo_shen点神(如果结果超过他/她的最大神,则减少到最大值)。你有无限数量的鼠儿果。 - 如果气足够,则发起特殊技能攻击。每个英雄恰好有一个特殊技能攻击,同时攻击 XX 和 SY。注意,某些特殊技能攻击是物理的。使用物理特殊技能攻击会让你受到与 SY 相同的伤害,就像武器攻击一样。
现在是时候为每个英雄引入另外四个参数:wad、ssd、ssq 和 ssp。英雄的武器攻击和特殊技能攻击对 SY 造成的精点数伤害分别由 wad 和 ssd 表示。当且仅当 ssp=1 时,特殊技能攻击是物理的(否则 ssp=0)。它需要 ssq 点气。
正如你可能已经注意到的,气不能通过仙术或物品恢复。增加气的唯一两种方法是:进行武器攻击,或被武器攻击击中。被物理反弹伤害击中不会为你增加额外的气。
所以这里是每个英雄的最后两个参数:q1 和 q2,这意味着进行武器攻击会增加 q1 点气(无论你是否被反弹),而受到武器攻击会增加 q2 点气。如果结果超过他/她的最大气(始终为 100),则减少到最大值。同样,执行特殊技能攻击永远不会增加你的气。被 Boss 的特殊技能攻击击中也永远不会增加你的气。
作为完美主义者,你不希望任何英雄被击败,哪怕是暂时的(在真实游戏中,你可以用特定的仙术或物品复活英雄)——例如,不允许让 YTH 和 SY 同时被击败(这可能会发生,例如在 YTH 执行了强大的物理特殊技能攻击之后)。
最后的问题是:如果你采取最优策略,你能赢得战斗的最早时间(我们只关心球移动的时间,不包括进行攻击所需的时间)是多少?为了最优地进行游戏,你需要为每次行动在上述选项中做出选择。这并不像听起来那么容易。请小心!
输入格式
最多有 100 组测试数据。每组数据以 6 个正整数开头:SY_jing(SY 的初始精)、XX_su(XX 的速)、SY_su(SY 的速)、yurun_jing、yurun_shen 和 shuerguo_shen。接下来的四行包含 YTH、HLS、LML 和 MRZY 的描述,按此顺序。每行包含 16 个非负整数:maxjing、maxshen、su、d1x、d2x、d1s、d2s、wad、ssd、ssq、ssp、q1、q2、jing、qi、shen。最后三个参数是该英雄在战斗开始前的初始精、气和神值。大多数参数的范围如下:
| 参数 | 最小值 | 最大值 |
|---|---|---|
SY_jing |
1 | 100,000 |
yurun_jing, maxjing, d1x, d2x, d1s, d2s |
1 | 8,000 |
yurun_shen, shuerguo_shen, maxshen |
1 | 800 |
XX_su, SY_su, su |
1 | 4 |
wad, ssd |
1 | 100,000 |
ssp |
0 | 1 |
q1, q2, ssq |
1 | 100 |
最后,$1 \le \text{jing} \le \text{maxjing}$,$0 \le \text{qi} \le 100$,$0 \le \text{shen} \le \text{maxshen}$。最后一组测试数据后跟着 6 个零,不应处理。
输出格式
对于每组测试数据,打印你能获胜的最早时间,以及实现该时间的所有可能的排列顺序。每种排列顺序表示为 H1、H2 和 H3 名字首字母的连接。例如,如果 H1=HLS,H2=LML,H3=YTH,则排列表示为 HLY。排列顺序应按字典序升序排列。如果你无法在 12 个单位的球移动时间内赢得战斗,则打印 -1。每组测试数据的输出后打印一个空行。
样例
输入 1
1000 1 1 200 15 75 1000 100 1 2000 2000 2000 2000 300 800 20 0 5 5 900 10 100 1000 100 1 2000 2000 2000 2000 120 300 10 0 5 5 100 80 100 1000 100 1 2000 2000 2000 2000 100 400 30 1 5 5 450 40 100 1000 100 1 2000 2000 2000 2000 250 700 10 1 5 5 600 50 100 3000 4 1 800 15 75 2000 100 3 2 2 2 2 1 1 1 0 2 1 1000 100 100 2000 100 4 2 2 2 2 1 1000 25 0 2 1 1 1 100 2000 100 1 2 2 2 2 1 1000 1 1 1 1 300 100 0 2000 100 3 2 2 2 2 1 1000 30 0 5 1 1 6 100 26399 3 2 3182 543 800 4462 353 2 4300 4875 6856 5527 31497 5633 61 0 68 63 4355 0 351 5444 300 3 7682 1037 597 4214 6744 6861 68 0 65 12 2136 32 143 5875 705 2 2097 118 2366 978 14276 24850 48 0 55 70 3562 40 277 6413 33 1 6305 1898 340 5238 13989 25287 25 1 72 34 3176 4 30 0 0 0 0 0 0
输出 1
Case 1: 4 HLY HYL LHY LYH YHL YLH Case 2: 12 HML Case 3: -1
说明
在第一个样例中,每个英雄行动一次后你就可以赢得战斗(在时间 4,因为所有 su 值都是 1),但你需要小心。
YTH 的特殊技能攻击很强大(伤害=900),但他的气不足(10<20)。你不能使用 HLS 的武器攻击,因为她会被物理反弹伤害击败。LML 的武器攻击很弱,但她可以使用她的特殊技能攻击,即使她会被反弹伤害(她的特殊技能攻击是物理的),因为 400<450。对于 MRZY,他的特殊技能是物理的,且太强大了,所以我们不能使用它,因为 700>600。
综上所述,我们可以使用 YTH 的武器攻击(伤害=300)、HLS 的特殊技能攻击(伤害=300)、LML 的武器攻击(伤害=100)和特殊技能攻击(伤害=400),以及 MRZY 的武器攻击(伤害=250)。不难看出,唯一能以最快方式结束战斗的组合是 YTH、HLS 和 LML(使用特殊技能攻击),顺序是任意的。注意,战斗在 SY 被击败后立即结束,所以不用担心 XX 和 SY 的可怕攻击。
在第二个样例中,YTH 太弱了,所以我们直接忽略他。你无法避免 XX 的第一次攻击,它能够击败除 LML 之外的所有人,所以 LML 似乎是唯一可能的 H1。然而,HLS 在 XX 之前行动,所以如果她在第一次行动中使用“雨润”,她也可以是 H1。不幸的是,MRZY 不能是 H1,因为他不够快,无法在 XX 攻击前恢复精。
所有的武器攻击都太弱了,所以最好的策略是先积累气,然后在可能的情况下执行强大的特殊技能攻击。LML 的 su 太低,但她的气在开始时是足够的。她所要做的就是恢复神,然后恢复精,最后进行攻击(为什么这么复杂?因为她强大的特殊技能攻击是物理的……)。注意,SY 在战斗结束前只能攻击两个英雄,所以 H3 通过反弹增加气的机会少了一次。实际上,可以证明 HLS 和 MRZY 都不能是 H3——如果是这样,他们将无法获得足够的特殊技能攻击所需的气。
综上所述,HLS 可以是 H1 或 H2,LML 可以是任何位置,而 MRZY 只能是 H1。所以唯一可能的顺序是 H1=HLS,H2=MRZY,H3=LML。
在第三个样例中,似乎你可以用 HLS 的特殊技能攻击(伤害=6861)和 LML 的特殊技能攻击(伤害=24850)击败 SY。然而,LML 需要恢复精以避免被击败,但她的初始神不足。如果我们把她的初始神改为 543(足够使用“雨润”),答案将变为 "6 LYH LYM"。