#P16770. [GKS 2020 #F] Yeetzhee

    ID: 19114 远端评测题 1000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>动态规划 DP2020Special Judge期望Google Kick Start

[GKS 2020 #F] Yeetzhee

题目描述

Pommel 在家非常无聊,于是她发明了一个涉及 NN 个骰子的新游戏。每个骰子上写有从 11MM 的数字。当她掷一个骰子时,落在 MM 个可能值中每一个的概率均等。

Pommel 将所有骰子排成一行。她从左到右依次处理每个骰子。对于每个骰子,她掷出后可以选择保留掷出的数值并继续下一个骰子,或者重新掷该骰子。Pommel 在继续下一个骰子之前可以任意多次重掷当前骰子。

当 Pommel 处理完所有骰子后,游戏结束。为了判断她是否获胜,她将骰子分组。所有数值相同的骰子被分到同一组。因此,如果她最终有 xx 个不同的数值,那么就会有 xx 组。然后这些组按组内骰子数量非递减顺序排列。

例如:

  • 如果最终骰子结果为 [2,2,3,2,2,3][2, 2, 3, 2, 2, 3],骰子会被分成 22 组,排序后为:[3,3][3, 3][2,2,2,2][2, 2, 2, 2]
  • 如果最终骰子结果为 [1,6,7,7][1, 6, 7, 7],骰子会被分成 33 组,排序后为:[6][6][1][1][7,7][7, 7](或者等价地 [1][1][6][6][7,7][7, 7])。

如果 Pommel 最终恰好有 KK 组,并且对于所有 ii,第 ii 组恰好包含 AiA_i 个骰子,则她获胜。

假设 Pommel 采取最优策略以最小化获胜所需的期望总掷骰次数,求该期望值。

保证对于任何有效的输入,Pommel 都有可能获胜。

输入格式

输入的第一行给出测试用例的数量 TT。接下来有 TT 个测试用例。每个测试用例的第一行包含三个整数 NNMMKK。随后 KK 行描述她最终必须得到的各组。第 ii 行包含 AiA_i

输出格式

对于每个测试用例,输出一行,格式为 Case #x: y,其中 xx 是测试用例编号(从 11 开始),yy 是 Pommel 为了获胜所需的总掷骰次数的期望值。

如果 yy 与正确答案的绝对误差或相对误差在 10610^{-6} 以内,则认为正确。

2
3 6 2
1
2
5 2 1
5
Case #1: 4.7
Case #2: 9.0

提示

在样例 #1 中,Pommel 有 N=3N = 3 个骰子,每个骰子上的数字为 11M=6M = 6。要获胜,她必须最终有 K=2K = 2 组。一组必须包含 11 个骰子(A1=1A_1 = 1),另一组必须包含 22 个骰子(A2=2A_2 = 2)。Pommel 的一种最优策略如下:

  • Pommel 掷第一个骰子 11 次。
  • Pommel 掷第二个骰子 11 次。
  • 如果第一个和第二个骰子的结果相同,Pommel 不断掷第三个骰子,直到它得到与前两个不同的数值。平均需要 1.21.2 次掷骰。
  • 如果第一个和第二个骰子的结果不同,Pommel 不断掷第三个骰子,直到它匹配第一个或第二个骰子的数值。平均需要 33 次掷骰。

这种策略下,Pommel 平均需要 4.74.71+1+1/6×1.2+5/6×31 + 1 + 1/6 \times 1.2 + 5/6 \times 3)次掷骰。

在样例 #2 中,Pommel 有 N=5N = 5 个骰子,每个骰子上的数字为 11M=2M = 2。要获胜,她必须最终有 K=1K = 1 组,且该组包含所有 55 个骰子(A1=NA_1 = N)。对于骰子 11,Pommel 掷它 11 次。然后,对于剩下的每个骰子,她不断掷直到它与骰子 11 的数值相同。平均需要 22 次掷骰。

这种策略下,Pommel 平均需要 991+2+2+2+21 + 2 + 2 + 2 + 2)次掷骰。

限制条件

1T1001 \le T \le 100

1KM1 \le K \le M

对于所有 ii1Ai1 \le A_i

A1+A2++AK=NA_1 + A_2 + \dots + A_K = N

对于所有 iiAiAi+1A_i \le A_{i+1}

测试集 1

2N62 \le N \le 6

2M62 \le M \le 6

测试集 2

2N502 \le N \le 50

2M502 \le M \le 50

翻译由 DeepSeek V4 Pro 完成