TheSwapsDivOne

作者:翁文涛 徐明宽

关键词:概率,期望,Dp,递推数列

题目简述

给定一个长度为的序列,有一个人会对这个序列进行轮操作。每一轮,这个人会随机选择两个位置,并交换。操作完后,他会随机选择这个序列的一段连续区间,记,问的期望是多少。

数据范围

算法一

表示最终这个位置是否被选中,表示位置最终的值,那么有: 那么问题就变成,对于每个位置,求出非常好求,就等于 ,现在关键就是求出。 令表示,第个位置经过轮被移到了第个位置的概率。那么对于,我们可以得到的转移式: 其中,第一项表示第轮交换没有选中位置的概率,第二项表示之前是位置移到位置,然后第轮选择了来交换。 那么显然,。 直接这样做是会超时的,我们不妨观察的转移,可以发现,由于,并且转移中并没有将具体的值代入计算,因此,可以用数学归纳法简单的证明出,假如固定,对于任意,有,且。 那么我们可以稍微修改一下dp的状态。设,那么我们可以根据的转移,轻松写出的转移: 那么我们可以求出。 最后,

算法二

注意到,记,则由于,有 所以直接一个pow就好啦~于是总时间复杂度就变成了(瓶颈为输入……)

results matching ""

    No results matching ""