#codethanksfestival14qualag. [code_thanks_festival_14_quala_g]通勤電車と気分
[code_thanks_festival_14_quala_g]通勤電車と気分
问题说明
我是通勤火车的专家。今天我正在站台上等待火车。由于这是本站的始发车,所以所有座位都是空闲的,但是我不知道能否坐下,因为有 个人排在我前面。
车厢里有 个座位,按顺序排列,每个座位从 到 编号。你可能会认为,通过知道座位数和前面排队的人数,就能判断能否坐下来。但事实并不那么简单。
我知道,人们根据当天的心情选择座位的方式会变化。具体来说,一天的心情有两种:
- "无论如何都想坐下":这种情况下,只要有空座位,就会选择编号最小的座位。
- "如果条件允许,我愿意坐下":这种情况下,只要有空座位,并且两侧的座位也是空的,就会选择编号最小的座位。即使没有相邻的座位,也可以假设相邻的座位为空。
无论是哪种情况,如果找不到符合条件的座位,就会放弃坐下。
现在,我们将排在我前面的人按顺序编号为 , , , 。也就是说,首先人 进入车厢,根据当天的心情选择座位。然后人 进入车厢,根据当天的心情选择座位。依此类推,直到人 进入车厢并选择完座位,最后轮到我进入车厢。
根据我的估计,第 个人有 的概率选择"无论如何都想坐下"的心情,有 的概率选择"如果条件允许,我愿意坐下"的心情。在这个假设下,当 个人都进入车厢并选择完座位时,也就是我进入车厢时,计算出剩余空座位的期望值。
输入
:
- 第一行是两个整数 () 和 (),分别表示排队的人数和车厢中的座位数。
- 接下来的 行,每行一个整数,表示每个人选择"无论如何都想坐下"心情的概率 ()。
部分分
本问题有部分分。
- 对于每个满足 的数据集,如果全部正确,得到 分。
- 如果对所有数据集都正确,额外得到 分,总共得到 分。
输出
当第 个人进入车厢并选择完座位时,即我进入车厢时,输出剩余空座位的期望值,保留小数点后 位。如果与真实值的绝对误差或相对误差不超过 ,则视为正确。
示例1
3 4
100
30
60
输出1
1.28
由于人 总是选择"无论如何都想坐下"的心情,我们只需考虑人 和 的心情:
- 人 和 都选择"无论如何都想坐下"的概率是 ,剩余 个座位。
- 人 选择"无论如何都想坐下"的心情,而人 选择"如果条件允许,我愿意坐下"的心情的概率是 ,剩余 个座位。
- 人 选择"如果条件允许,我愿意坐下"的心情,而人 选择"无论如何都想坐下"的心情的概率是 ,剩余 个座位。
- 人 和 都选择"如果条件允许,我愿意坐下"的概率是 ,剩余 个座位。
因此,剩余空座位的期望值为 $1 \times 0.18 + 1 \times 0.12 + 1 \times 0.42 + 2 \times 0.28 = 1.28$。
示例2
5 7
28
31
59
61
30
输出2
2.11193
示例3
10 10
97
98
99
98
97
96
97
98
99
98
输出3
0.020237732