CF1392H - ZS Shuffles Cards
CF1392H - ZS Shuffles Cards
题目大意
给定 \(n\) 张卡和 \(m\) 个终止符,初始时随机打乱成排列,每次操作选出最前面的卡 \(x\) 拿走
1.如果 \(x\) 不是终止符,将 \(x\) 放入集合
2.如果 \(x\) 是终止符,那么重新打乱 \(n+m\) 张卡
求期望多少步 \(S\) 变成全集
分析
令 \(dp_i\) 表示当前手上有 \(i\) 张不同卡时期望多少步结束
按轮考虑,一轮期望操作次数固定,即
\(\displaystyle \frac{\displaystyle \sum _{i=0}^n \binom{n+m-i-1}{m-1}(i+1)}{\displaystyle \binom{n+m}{m}}\)
现在考虑从 \(dp_{i+j}\) 转移过来,当前的牌可以分为三类
1.手里有的
2.手里没有的
3.终止牌
我们计算 \(dp_{i+j}\) 向 \(dp_i\) 转移时的概率,并不需要管1类卡,只需要考虑2,3类卡的相对顺序
不妨直接忽略手里的 \(i\) 张卡,得到转移系数
\(dp_{i+j}\rightarrow dp_i: \cfrac{\displaystyle \binom{n-i-j-1}{m-1}}{\displaystyle \binom{n-i+m}{m}}\)
容易发现可以将 \(\displaystyle dp_{i+j}\binom{n-i-j-1}{m-1}\) 累和完成
注意 \(dp_i\) 有向 \(dp_{i}\) 自己的转移,需要解一次方程,因此需要求逆元
1 | const int N=4e6+10,P=998244353; |