1 条题解
-
0
我们考虑对一个长度为 的随机排列反复执行“粘连块打乱”操作,直到变回升序排列的过程。记随机变量 为执行打乱操作的次数,目标是计算 。
首先,任何一次操作结束后,排列会被划分成若干个“粘连块”——也就是那些相邻且数值连续、顺序保持递增的区间。这些块在下一次打乱时会被视为整体。设最终分得 个块的方案数记为 。
要统计 ,我们利用两步思路:
- 如何划分成 段? 将 这 个连续整数切成 段,每段至少一个数,对应的方案数是“在 个相邻间隔中选 个”,方案数为 。
- 如何排列这 段? 划分后得到 段,每段内部按升序是唯一的,段与段之间可以任意重排序,共 种。
于是组合可得 。
接下来写出期望 的递推。在一步打乱操作中,若当前排列分得 块,则下一次继续打乱的概率恰好是“得到 块”的概率
当 时,说明已经是一个整体升序块,过程结束;否则,还需要继续至少一次操作。根据全概率公式,
其中“+1”来自当前这一次打乱操作, 表示若分成 块后,从 块恢复升序的期望步骤。注意右侧包含 项,此时分成 个单元素块(即完全打散,概率 ),会导致 又出现在右侧。我们将它移到左边:
$$E(n)\left(1-p_{n, n}\right)=1+\sum_{m=2}^{n-1} p_{n, m} E(m) $$因此
$$E(n)=\frac{1+\sum_{m=2}^{n-1} p_{n,m} E(m)}{1-p_{n,n}}=\frac{1+\sum_{m=2}^{n-1} \frac{f(n, m)}{n !} E(m)}{\sum_{k=1}^{n-1} \frac{f(n, k)}{n !}} $$这里分母 就是一次操作后真正“减少块数”的总概率。
用一维数组 自小到大填表:
- 初始值 ;
- 对于 到 ,先累加 ,再除以分母 ,加上 1。
直接双重循环是 ,当 可接受;若要做到 ,可用分治 FFT 加速。
- 1
信息
- ID
- 574
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 31
- 已通过
- 11
- 上传者