QOJ.ac

QOJ

Time Limit: 10 s Memory Limit: 1024 MB Total points: 44

#12271. 游玩巨龙

Statistics

你是一条友好的龙,正在保护你的巢穴免受贪婪骑士的侵害!你拥有 $H_d$ 点生命值和 $A_d$ 点攻击力,而骑士拥有 $H_k$ 点生命值和 $A_k$ 点攻击力。如果你的生命值在任何时候降至 0 或以下,你就会被击倒并立即失败;如果骑士的生命值在任何时候降至 0 或以下,骑士就会被击倒,你就赢了!

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

  • 攻击 (Attack):减少对手 $A_d$ 点生命值。
  • 强化 (Buff):在战斗剩余时间内,将你的攻击力增加 $B$。
  • 治疗 (Cure):你的生命值恢复为 $H_d$。
  • 削弱 (Debuff):在战斗剩余时间内,减少对手 $A_k$ 点攻击力。如果削弱会导致对手的攻击力变为负数,则将其设为 0。

之后,如果你的动作执行后骑士的生命值大于 0,骑士将执行一次攻击动作。在那之后,回合结束。(注意:即使你击败骑士的那一回合,骑士没有机会行动,该回合仍然计入总回合数。)

注意,强化效果可以叠加;每次强化都会使你的攻击力额外增加 $B$。同样,削弱效果也可以叠加。

你希望尽可能快地击败骑士(如果可能的话),这样你就不会因为迟到而错过帮助村民在今晚的节日上烤棉花糖。你能确定击败骑士所需的最少回合数,或者判断这是否是不可能的吗?

输入格式

输入的第一行给出测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例由一行组成,包含六个整数 $H_d, A_d, H_k, A_k, B$ 和 $D$,含义如上所述。

输出格式

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

数据范围

内存限制:1 GB。 $1 \le T \le 100$。

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

时间限制:60 秒。 $1 \le H_d \le 100$。 $1 \le A_d \le 100$。 $1 \le H_k \le 100$。 $1 \le A_k \le 100$。 $0 \le B \le 100$。 $0 \le D \le 100$。

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

时间限制:240 秒。 $1 \le H_d \le 10^9$。 $1 \le A_d \le 10^9$。 $1 \le H_k \le 10^9$。 $1 \le A_k \le 10^9$。 $0 \le B \le 10^9$。 $0 \le D \le 10^9$。

样例

样例输入 1

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

样例输出 1

Case #1: 5
Case #2: 2
Case #3: IMPOSSIBLE
Case #4: 5

说明

在案例 #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 中,一种可能的最优动作序列是:攻击、削弱、强化、攻击、攻击。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.