QOJ.ac

QOJ

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

#12068. 再次拯救宇宙

Statistics

外星机器人正在威胁宇宙,它使用一道光束,将摧毁所有的算法知识。我们必须阻止它!

幸运的是,我们了解机器人的工作原理。它开始时光束强度为 1,并会运行一个程序,该程序是一系列指令,将按从左到右的顺序逐一执行。每条指令属于以下两种类型之一:

  • C(代表“充能”):光束强度加倍。
  • S(代表“射击”):发射光束,造成的伤害等于光束当前的强度。

例如,如果机器人的程序是 SCCSSC,机器人运行程序时会执行以下操作:

  • 发射光束,造成 1 点伤害。
  • 为光束充能,将光束强度加倍至 2。
  • 为光束充能,将光束强度加倍至 4。
  • 发射光束,造成 4 点伤害。
  • 发射光束,造成 4 点伤害。
  • 为光束充能,将光束强度增加至 8。

在这种情况下,该程序总共会造成 9 点伤害。

宇宙顶尖的算法专家开发了一种护盾,最多可以承受总计 $D$ 点伤害。但机器人当前的程序在运行时可能会造成超过该数值的伤害。

宇宙总统自愿飞往太空,在机器人运行程序之前对其进行修改。总统唯一能进行修改(且不被机器人察觉)的方法是交换两条相邻的指令。例如,总统可以通过交换第三条和第四条指令,将上述程序修改为 SCSCSC,从而将总伤害降低到 7。然后,总统可以再次修改程序,将其变为 SCSSCC,将伤害降低到 5,以此类推。

为了防止机器人产生怀疑,总统不想进行过多次数的修改。如果可能的话,请问为了确保程序造成的总伤害不超过 $D$,最少需要进行多少次修改?

输入格式

输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例包含一行,其中包含一个整数 $D$ 和一个字符串 $P$:护盾能承受的最大总伤害以及机器人的程序。

输出格式

对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是完成目标所需的最少修改次数,如果无法完成,则输出 IMPOSSIBLE

数据范围

$1 \le T \le 100$ $1 \le D \le 10^9$ $2 \le \text{length of } P \le 30$ $P$ 中的每个字符均为 CS

样例

样例输入 1

6
1 CS
2 CS
1 SS
6 SCCSSC
2 CC
3 CSCSS

样例输出 1

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

说明

注意,最后三个样例用例不会出现在测试集 1 中。

在样例 1 中,总统可以交换两条指令,将总伤害降低到 1,护盾可以承受。

在样例 2 中,总统不需要对程序进行任何修改,因为护盾已经可以承受它将造成的 2 点总伤害。

在样例 3 中,程序造成的伤害将超过护盾的承受能力,且修改程序对此毫无帮助。宇宙注定毁灭。

样例 4 使用了题目描述中提到的程序。题目演示了一种使用两次修改将总伤害降低到 5 的方法。仅使用一次修改无法将伤害降低到 6 或更低;请记住,总统只能交换相邻的指令。

在样例 5 中,机器人从不射击,因此它永远不会造成任何伤害。无需进行修改。

在样例 6 中,需要进行五次修改。请注意,即使两次修改交换了相同两个位置的指令,它们仍然计为单独的修改。

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.