CF261B Maxim and Restaurant
题目描述
Maxim 开了一家自己的餐厅!餐厅有一张非常大的桌子,桌子的长度为 $p$ 米。
Maxim 今晚要举办一场晚宴,将有 $n$ 位客人前来。我们把 Maxim 餐厅的客人编号为 $1$ 到 $n$。Maxim 知道即将到来的所有客人的体积,第 $i$ 位客人的体积为 $a_{i}$,表示如果他坐在餐厅的桌子旁,将占用 $a_{i}$ 米的长度。
在晚宴开始前,所有客人在餐厅门口按某种顺序排队。然后 Maxim 按顺序让客人进来。每次让客人入席时,如果当前所有已经入席的客人所占用的长度之和,加上当前队列最前面的客人的长度不超过 $p$,就让该客人入座;否则,说明桌子上已经没有足够的位置容纳当前队列最前面的客人。此时,为了不让这位无法入席的客人感到不快,Maxim 也不再让后面的任何客人入席(即使后面的客人本可以坐下)。
Maxim 现在想要知道,对于所有 $n!$ 种客人排队顺序,平均有多少位客人能进入餐厅。请帮助 Maxim 计算这个平均值。
输入格式
第一行包含一个整数 $n$,表示餐厅有多少位客人 $(1\leq n\leq 50)$。
第二行包含 $n$ 个整数 $a_{1}, a_{2}, ..., a_{n}$ $(1\leq a_{i}\leq 50)$,表示每位客人的体积(以米为单位)。
第三行包含一个整数 $p$ $(1\leq p\leq 50)$,表示餐桌的长度(以米为单位)。
相邻的数通过一个空格分隔。
输出格式
输出一个实数,表示答案。你的答案将被认为是正确的,如果其绝对误差或相对误差不超过 $10^{-4}$。
说明/提示
在第一个样例中,客人可能来的顺序如下:
- $(1,2,3)$ —— 有两位客人能入座;
- $(1,3,2)$ —— 有一位客人能入座;
- $(2,1,3)$ —— 有两位客人能入座;
- $(2,3,1)$ —— 有一位客人能入座;
- $(3,1,2)$ —— 有一位客人能入座;
- $(3,2,1)$ —— 有一位客人能入座。
总共 $(2+1+2+1+1+1)/6 = 8/6 = 1.\overline{3}$。
由 ChatGPT 5 翻译