P16770 [GKS 2020 #F] Yeetzhee

题目描述

Pommel 在家非常无聊,于是她发明了一个涉及 $N$ 个骰子的新游戏。每个骰子上写有从 $1$ 到 $M$ 的数字。当她掷一个骰子时,落在 $M$ 个可能值中每一个的概率均等。 Pommel 将所有骰子排成一行。她从左到右依次处理每个骰子。对于每个骰子,她掷出后可以选择保留掷出的数值并继续下一个骰子,或者重新掷该骰子。Pommel 在继续下一个骰子之前可以任意多次重掷当前骰子。 当 Pommel 处理完所有骰子后,游戏结束。为了判断她是否获胜,她将骰子分组。所有数值相同的骰子被分到同一组。因此,如果她最终有 $x$ 个不同的数值,那么就会有 $x$ 组。然后这些组按组内骰子数量非递减顺序排列。 例如: - 如果最终骰子结果为 $[2, 2, 3, 2, 2, 3]$,骰子会被分成 $2$ 组,排序后为:$[3, 3]$ 和 $[2, 2, 2, 2]$。 - 如果最终骰子结果为 $[1, 6, 7, 7]$,骰子会被分成 $3$ 组,排序后为:$[6]$、$[1]$ 和 $[7, 7]$(或者等价地 $[1]$、$[6]$ 和 $[7, 7]$)。 如果 Pommel 最终恰好有 $K$ 组,并且对于所有 $i$,第 $i$ 组恰好包含 $A_i$ 个骰子,则她获胜。 假设 Pommel 采取最优策略以最小化获胜所需的期望总掷骰次数,求该期望值。 保证对于任何有效的输入,Pommel 都有可能获胜。

输入格式

输入的第一行给出测试用例的数量 $T$。接下来有 $T$ 个测试用例。每个测试用例的第一行包含三个整数 $N$、$M$ 和 $K$。随后 $K$ 行描述她最终必须得到的各组。第 $i$ 行包含 $A_i$。

输出格式

对于每个测试用例,输出一行,格式为 `Case #x: y`,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是 Pommel 为了获胜所需的总掷骰次数的期望值。 如果 $y$ 与正确答案的绝对误差或相对误差在 $10^{-6}$ 以内,则认为正确。

说明/提示

在样例 #1 中,Pommel 有 $N = 3$ 个骰子,每个骰子上的数字为 $1$ 到 $M = 6$。要获胜,她必须最终有 $K = 2$ 组。一组必须包含 $1$ 个骰子($A_1 = 1$),另一组必须包含 $2$ 个骰子($A_2 = 2$)。Pommel 的一种最优策略如下: - Pommel 掷第一个骰子 $1$ 次。 - Pommel 掷第二个骰子 $1$ 次。 - 如果第一个和第二个骰子的结果相同,Pommel 不断掷第三个骰子,直到它得到与前两个不同的数值。平均需要 $1.2$ 次掷骰。 - 如果第一个和第二个骰子的结果不同,Pommel 不断掷第三个骰子,直到它匹配第一个或第二个骰子的数值。平均需要 $3$ 次掷骰。 这种策略下,Pommel 平均需要 $4.7$($1 + 1 + 1/6 \times 1.2 + 5/6 \times 3$)次掷骰。 在样例 #2 中,Pommel 有 $N = 5$ 个骰子,每个骰子上的数字为 $1$ 到 $M = 2$。要获胜,她必须最终有 $K = 1$ 组,且该组包含所有 $5$ 个骰子($A_1 = N$)。对于骰子 $1$,Pommel 掷它 $1$ 次。然后,对于剩下的每个骰子,她不断掷直到它与骰子 $1$ 的数值相同。平均需要 $2$ 次掷骰。 这种策略下,Pommel 平均需要 $9$($1 + 2 + 2 + 2 + 2$)次掷骰。 ### 限制条件 $1 \le T \le 100$。 $1 \le K \le M$。 对于所有 $i$,$1 \le A_i$。 $A_1 + A_2 + \dots + A_K = N$。 对于所有 $i$,$A_i \le A_{i+1}$。 **测试集 1** $2 \le N \le 6$。 $2 \le M \le 6$。 **测试集 2** $2 \le N \le 50$。 $2 \le M \le 50$。 翻译由 DeepSeek V4 Pro 完成