0%

ABC-470-E - Concentration (翻牌配对)

题目大意

翻牌配对

时限 2000 ms,内存 1024 MB。

给定整数 N,LN, L 以及 NN 个两两不同的整数 A1,A2,,ANA_1, A_2, \dots, A_N

桌上共有 2N2N 张牌,每个数值 AiA_i 恰好写在其中两张牌的正面上,牌的背面没有任何信息。

初始时把所有牌随机洗乱后背面朝上摆放。等价地说:设 BB 是把序列 (A1,A1,A2,A2,,AN,AN)(A_1, A_1, A_2, A_2, \dots, A_N, A_N) 均匀随机打乱后得到的长度为 2N2N 的序列,则第 ii 张牌正面的数字为 BiB_i

玩家知道所有的 AiA_i,但最初不知道任何 BiB_i。一旦某张牌 ii 被翻开,玩家就会永久记住 BiB_i 的值。

游戏开始时,生命值为 LL,得分为 00,尚未被移除的牌的下标集合为 S={1,2,,2N}S = \{1, 2, \dots, 2N\}。玩家在任何时刻都知道当前的生命值、得分和集合 SS

重复执行以下步骤,直到生命值变为 00 或者 SS 为空:

  1. 玩家根据当前已知信息,从 SS 中选择一张牌 ii 并翻开,获知 BiB_i

  2. 玩家根据当前已知信息(包括刚获知的 BiB_i),从 S{i}S \setminus \{i\} 中选择一张牌 jj 并翻开,获知 BjB_j

  3. Bi=BjB_i = B_j,则把 i,ji, jSS 中移除,并把得分增加 BiB_i

  4. BiBjB_i \neq B_j,则把这两张牌翻回背面,并把生命值减少 11

玩家以最大化最终得分的期望值为目标采取最优策略。请求出游戏结束时的期望得分。

输入从标准输入按以下格式给出:

第一行两个整数 NNLL

第二行 NN 个整数 A1,A2,,ANA_1, A_2, \dots, A_N

输出一行一个实数,表示最优策略下游戏结束时的期望得分。答案与标准答案的绝对误差或相对误差不超过 10510^{-5} 即视为正确。

  • 1N2001 \leq N \leq 200

  • 1L2001 \leq L \leq 200

  • 1A1<A2<<AN1051 \leq A_1 < A_2 < \dots < A_N \leq 10^5

  • 所有输入值均为整数。

1
2
3 2
1 2 3
1
3.8666666667

游戏可能按如下方式进行。为了区分这六张牌,分别称它们为 ABCDEF

游戏以生命值 22、得分 00 开始。

翻开卡牌 A,上面写着 33
翻开卡牌 B,上面写着 22
因为数字不同,把两张牌翻回背面,生命值减少 11,变为 11

翻开卡牌 C,上面写着 33
翻开卡牌 A,上面写着 33
因为数字相同,把这两张牌移出桌面,得分增加 33,变为 33

翻开卡牌 D,上面写着 11
翻开卡牌 E,上面写着 22
因为数字不同,把两张牌翻回背面,生命值减少 11,变为 00

生命值变为 00,游戏结束,最终得分为 33

注意,在上述过程中刚翻开卡牌 C 之后,玩家可以利用「卡牌 C 正面写着 33」这一信息,选择翻开另一张已经知道写着 33 的卡牌 A

1
2
5 2
2 3 5 7 101
1
17.8560846561
1
2
20 10
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200
1
770.7122293087

思路讲解

AC代码

心路历程(WA,TLE,MLE……)