#abc470e. Concentration
Concentration
题目描述
高橋君在玩一个类似「翻牌记忆」的单人游戏。
有 张卡片,正面写着一个数,背面什么都没有。对每个 ,写着 的卡片恰好有 张( 两两不同)。
游戏流程如下:
- 把 张卡片洗乱后背面朝上摆好;
- 把生命值设为 ,得分设为 ;
- 重复下面的过程,直到生命值变成 或场上没有卡片:
- 选一张背面朝上的卡片翻开,记它上面的数为 ;
- 再选一张背面朝上的卡片翻开,记它上面的数为 ;
- 若 ,把这两张卡片从场上移除,得分增加 ;
- 若 ,把这两张卡片重新翻回背面,生命值减 。
高橋君知道 的值,也完整记得他见过的每一张卡片的位置和数值。他会按照「让最终得分的期望最大」的方式最优地行动。
请求出游戏结束时得分的期望值。
输入格式
N L
A_1 A_2 ... A_N
输出格式
输出期望得分。与标准答案的绝对误差或相对误差不超过 即视为正确。
输入示例 1
3 2
1 2 3
输出示例 1
3.8666666667
示例 1 说明
游戏可能这样进行(把 张卡片记作 A F):
- 生命 、得分 开局;
- 翻开
A是 ,翻开B是 ,不同 → 翻回去,生命变 ; - 翻开
C是 ,此时高橋君记得A也是 ,于是翻开A→ 配对成功,移除两张,得分变 ; - 翻开
D是 ,翻开E是 ,不同 → 生命变 ,游戏结束,得分 。
对所有洗牌情况取期望后得到 。
输入示例 2
5 2
2 3 5 7 101
输出示例 2
17.8560846561
示例 2 说明
注意数值差异很大(有 )但期望仍可按整体比例计算——这与「策略不依赖具体数值」这一性质有关。
输入示例 3
20 10
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200
输出示例 3
770.7122293087
示例 3 说明
对牌、 条命,。期望得分约为 ,也就是平均能配掉约 对。可以用它检验「期望得分 = 总和 × 期望配对数 / N」这条对称性结论:把 换成任意其他 个互不相同的数,只要总和仍是 ,答案就应该完全一样。
约束条件
- 所有输入值均为整数