#P13164. [GCJ 2017 #1A] Play the Dragon

[GCJ 2017 #1A] Play the Dragon

Description

你是一条友善的龙,正在与一名贪婪的骑士战斗,以保护你的巢穴!你拥有 HdH_d 点生命值和 AdA_d 点攻击力,骑士拥有 HkH_k 点生命值和 AkA_k 点攻击力。如果你的生命值在任何时刻降至 00 或以下,你会被击倒并立即失败;如果骑士的生命值在任何时刻降至 00 或以下,骑士会被击倒,你获得胜利!

你将与骑士进行一系列回合的战斗。在每个回合中,你先行动,可以选择并执行以下任意一个动作:

  • 攻击(Attack):使对方的生命值减少你当前的攻击力。
  • 增益(Buff):你的攻击力永久增加 BB
  • 治疗(Cure):你的生命值恢复为 HdH_d
  • 减益(Debuff):对方的攻击力永久减少 DD。如果减益会使对方攻击力降至 00 以下,则将其设为 00

然后,如果你的动作后骑士的生命值仍大于 00,骑士会执行一次攻击动作。之后本回合结束。(注意,如果你在本回合击败了骑士,虽然骑士不会再行动,但该回合仍然计入总回合数。)

注意,增益和减益效果可以叠加;每次增益会额外增加 BB 攻击力,每次减益会额外减少 DD 攻击力。

你希望尽快击败骑士(如果可能的话),这样你就不会错过今晚村民们烤棉花糖的节日了。你能否判断出击败骑士所需的最少回合数,或者判断是否不可能击败骑士?

Input Format

输入的第一行包含一个整数 TT,表示测试用例的数量。接下来有 TT 组测试用例。每组测试用例占一行,包含六个整数 HdH_dAdA_dHkH_kAkA_kBBDD,含义如上所述。

Output Format

对于每组测试用例,输出一行,格式为 Case #x: y,其中 xx 是测试用例编号(从 1 开始),yy 是击败骑士所需的最少回合数,或者如果无法击败骑士则输出 IMPOSSIBLE

4
11 5 16 5 0 0
3 1 3 2 2 0
3 1 3 2 1 0
2 1 5 1 1 1
Case #1: 5
Case #2: 2
Case #3: IMPOSSIBLE
Case #4: 5

Hint

样例解释

在第 1 组样例中,你有 11 点生命值和 5 点攻击力,骑士有 16 点生命值和 5 点攻击力。一种可能的最优行动顺序如下:

  • 第 1 回合:攻击,将骑士生命值降至 11。骑士攻击你,你的生命值降至 6。
  • 第 2 回合:攻击,将骑士生命值降至 6。骑士攻击你,你的生命值降至 1。
  • 第 3 回合:治疗,生命值恢复到 11。骑士攻击你,你的生命值降至 6。(如果你本回合选择攻击,下回合骑士的攻击会让你失败。)
  • 第 4 回合:攻击,将骑士生命值降至 1。骑士攻击你,你的生命值降至 1。
  • 第 5 回合:攻击,将骑士生命值降至 -4。你立即获胜,骑士不会再攻击。

在第 2 组样例中,一种可能的最优行动顺序如下:

  • 第 1 回合:增益,攻击力提升至 3。骑士攻击你,你的生命值降至 1。
  • 第 2 回合:攻击,将骑士生命值降至 0。你立即获胜,骑士不会再攻击。

在第 3 组样例中,骑士只需两次攻击就能击败你,而你无法在足够快的时间内击败骑士。你可以通过每次攻击后都治疗来无限延长战斗,但实际上无法击败骑士。

在第 4 组样例中,一种可能的最优行动顺序为:攻击、减益、增益、攻击、攻击。

数据范围

1T1001 \leq T \leq 100

小数据集(测试集 1 - 可见)

  • 时间限制:60 15 秒。
  • 1Hd1001 \leq H_d \leq 100
  • 1Ad1001 \leq A_d \leq 100
  • 1Hk1001 \leq H_k \leq 100
  • 1Ak1001 \leq A_k \leq 100
  • 0B1000 \leq B \leq 100
  • 0D1000 \leq D \leq 100

大数据集(测试集 2 - 隐藏)

  • 时间限制:240 60 秒。
  • 1Hd1091 \leq H_d \leq 10^9
  • 1Ad1091 \leq A_d \leq 10^9
  • 1Hk1091 \leq H_k \leq 10^9
  • 1Ak1091 \leq A_k \leq 10^9
  • 0B1090 \leq B \leq 10^9
  • 0D1090 \leq D \leq 10^9

由 ChatGPT 4.1 翻译