P16044 [ICPC 2022 NAC] Double Sort
题目描述
给定两个整数 $n$ 和 $m$($n \le m$),按照以下步骤生成一个包含 $n$ 个整数的序列:
1. 首先,从 $1$ 到 $m$(包含两端)中选出 $n$ 个互不相同的整数。
2. 将这些数按非降序排序。
3. 计算差分序列,即将序列 $a_1, a_2, a_3, \dots$ 变换为 $a_1, a_2 - a_1, a_3 - a_2, \dots$。
4. 将差分序列按非降序排序。
5. 对排序后的差分序列求前缀和,得到最终序列。即将序列 $b_1, b_2, b_3, \dots$ 变换为 $b_1, b_2 + b_1, b_3 + b_2 + b_1, \dots$。
例如,当 $n = 3$,$m = 10$ 时:
1. 假设初始选出的数为 $6, 2, 9$。
2. 排序后序列为 $2, 6, 9$。
3. 差分序列为 $2, 4, 3$。
4. 排序后的差分序列为 $2, 3, 4$。
5. 排序后差分序列的前缀和为 $2, 5, 9$。
假设在第 1 步中,你从 $[1, m]$ 中均匀随机地选取一组互不相同的整数。请计算最终序列中每个位置的期望值。
输入格式
输入只有一行,包含两个整数 $n$($1 \le n \le 50$)和 $m$($n \le m \le 10,000$),其中 $n$ 是序列的长度,且初始选出的所有整数都在 $1$ 到 $m$ 之间。
输出格式
输出 $n$ 行,每行一个实数,表示最终序列中对应位置的期望值。每个答案的绝对误差或相对误差不超过 $10^{-6}$ 即视为正确。