QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 1024 MB Total points: 100 Difficulty: [show] Hackable ✓

#8815. 空间站

Statistics

在遥远的未来,小青鱼(Little Cyan Fish)是人类文明前沿一座高科技空间站的指挥官。他的空间站不断受到外星敌人的威胁,这些攻击的间隔不可预测。攻击的强度各不相同,可能会对空间站的基础设施造成严重破坏。

作为指挥官,他可以使用先进的防御系统。每当敌方攻击即将来临时,他可以选择激活防御护盾来抵消攻击,或者让攻击通过,事后再处理损坏。然而,激活护盾是有代价的。

具体来说,小青鱼将受到 $n$ 次攻击。在每次攻击前,他可以选择花费 $m$ 美元激活护盾,使攻击无效(即不造成任何伤害)。在决定是否为某次攻击激活护盾后,他会获知当前攻击的强度 $b_i$。如果小青鱼没有为这次攻击激活护盾,他必须支付 $b_i$ 美元来修复攻击造成的损坏。(注意:激活护盾仅使当前攻击无效。如果他选择为下一次攻击激活护盾,他必须再次支付费用。)

然而,每次攻击造成的伤害 $b_i$ 尚不明确。小青鱼只知道 $b_i$ 是另一个已知序列 $a_1, a_2, \dots, a_n$ 的一个随机排列。换句话说,$b_i = a_{\sigma_i}$,其中 $\sigma_1, \sigma_2, \dots, \sigma_n$ 是从所有 $n!$ 种可能的排列中等概率随机选择的 $\{1, 2, \dots, n\}$ 的一个排列。注意,在每次攻击后,无论是否激活了护盾,小青鱼都会获知该次攻击的伤害值。

给定序列 $a_1, a_2, \dots, a_n$,请确定在最优策略下处理这些攻击的期望最小成本,结果对 $998\,244\,353$ 取模。更正式地说,将期望最小成本表示为不可约分数 $E = p/q$。那么,存在唯一的整数 $r \in [0, 998\,244\,353)$,使得 $r \times q \equiv p \pmod{998\,244\,353}$,请输出这个整数 $r$。

输入格式

第一行包含两个整数 $n$ 和 $m$ ($1 \le n \le 100, 1 \le m \le 100$)。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le 200$)。

输出格式

输出一行,包含一个整数,表示答案。

样例

样例输入 1

3 3
2 3 4

样例输出 1

499122185

样例输入 2

5 1
10 20 30 40 50

样例输出 2

5

说明

在第一个样例中,一种最优策略是: 在第一次攻击前激活护盾。这将花费 $3$ 美元。 有 $1/3$ 的概率 $a_1 = b_1 = 2$。在这种情况下,小青鱼应该在剩余的所有轮次中都激活护盾。这会额外花费 $3 \times 2 = 6$ 美元。因此,这种情况下的总成本为 $3 + 6 = 9$。 有 $1/3$ 的概率 $a_1 = b_2 = 3$。在这种情况下,小青鱼在第二轮攻击时不应激活护盾。 有 $1/2$ 的概率 $a_2 = b_1 = 2$。在这种情况下,小青鱼需要支付 $2$ 美元修复损坏。然后,小青鱼应在第三轮攻击中激活护盾,花费 $3$ 美元。因此,这种情况下的总成本为 $3 + 2 + 3 = 8$。 有 $1/2$ 的概率 $a_2 = b_3 = 4$。小青鱼需要支付 $4$ 美元修复损坏。然后,小青鱼在第三轮攻击中不应激活护盾,花费 $a_3 = b_1 = 2$ 美元修复损坏。因此,这种情况下的总成本为 $3 + 4 + 2 = 9$。 有 $1/3$ 的概率 $a_1 = b_3 = 4$。在这种情况下,小青鱼在剩余的所有轮次中都不应激活护盾。这会额外花费 $2 + 3 = 5$ 美元来修复剩余两轮攻击造成的损坏。因此,这种情况下的总成本为 $3 + 5 = 8$。

因此,第一个测试用例的答案为 $9 \times \frac{1}{3} + 8 \times \frac{1}{6} + 9 \times \frac{1}{6} + 8 \times \frac{1}{3} = \frac{17}{2} \equiv 499\,122\,185 \pmod{998\,244\,353}$。

在第二个样例中,最优策略是每一轮都激活护盾。

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.