CF1392H ZS Shuffles Cards(概率)

CF1392H ZS Shuffles Cards(概率)

题目大意

\(n + m\) 张不同的牌,其中有 n 张牌是编号 \(1 \to n\) 的,剩下的 m 张牌是鬼牌,但有标号。

现在我们对牌随机打乱以后做如下两个操作,且每个操作耗时 1:

如果牌顶不是鬼牌,那么把牌顶的牌的编号加入集合 s,然后把牌放到一边

如果第一张牌是鬼牌,那么先看看集合 s 是不是包含 1 到 n 的所有元素,如果是就结束游戏,否则随机打乱所有的牌(包括之前放到一边的牌),继续游戏。

求游戏结束的期望时间

数据范围

\[1 \le n, m \le 2 \times 10^6 \]

解题思路

官方题解是个大麻烦思路,但评论区里有神仙给出了神奇而简洁的做法,下面简单介绍一下

首先你发现即使你已经凑够了 n 个元素,但没有抽到鬼牌仍不能结束游戏,而我们可以求出一次洗牌操作次数的期望值,然后求出期望下洗牌多少次即可

先求出操作次数的期望,对于每一张牌放到第一张鬼牌的前面的概率是 \(\frac {1}{m+1}\),因此总共的期望就是 \(\frac n{m+1}+1\)

考虑期望下洗牌多少次,正着不好做?我们用 \(min-max\) 容斥,答案就是 \(\sum_{i=1}^n{n \choose i}(-1)^{i+1}g_i\)\(g_i\) 表示抽到第一张的期望次数

显然有 \(g_i = \sum_{j=0}[tim > j] = \sum_{j=0}(\frac {m}{m+i})^j=\frac {m+i}{i}\), 答案也可以轻松算出了

但正着真的不好做吗?神仙给出了更简洁的做法,设 \(f_i\) 表示还要凑 n 个的期望次数

如果本次没捞着,那么期望是 \(\frac {m}{m + i} \times f_i + 1\),否则就是 \(\frac {i}{m+i} \times f_{i-1}\)

化简方程得到 \(f_i= \frac {m}{i} + f_{i-1}\) 边界条件是 \(f_0 = 1\),得到 \(f_n = \sum_{i=1}^n\frac 1i\)

最后的一个问题就是为什么 \(\sum_{i=1}^n \frac 1i = \sum_{i=1}^n {n \choose i} (-1)^{i+1}\frac {1}{i}\)

这个问题是上面正推和倒推的两个式子的化简形式,请教了 ztb 学长,可以用数学归纳法证明,但 ei 说有积分证明的方法,我不是很会,路过的大佬可以教教我 😁

posted @ 2020-08-17 17:37  Hs-black  阅读(411)  评论(10编辑  收藏  举报