CodeForces 1349D Slime and Biscuits

\(n\) 个人,分别有 \(a_i\) 个饼干。每次随机选择一个饼干,将其随机分配给除了它现在所有者外的 \(n−1\) 个人。

求使得一个人拥有所有饼干的期望步数,答案对 \(998244353\) 取模。

设最终拥有所有饼干的人是 \(i\) 的概率是 \(p_i\),此时的期望步数为 \(E_i\),那显然有 \(\text{ans}=\sum\limits_{i=1}^{n}p_i\cdot E_i\)

再设,若游戏结束当且仅当 \(i\) 拥有全部饼干时的期望步数为 \(R_i\),一个人从拥有 \(i\) 块饼干到拥有 \(i+1\) 块饼干的期望步数为 \(f_i\)。我们有

\[\begin{aligned}R_i&=p_i\cdot E_i+\sum\limits_{j\neq i}p_j\cdot\left(E_j +\sum\limits_{k=0}^{n-1}f_k\right)\\&=p_i\cdot E_i+\sum\limits_{j\neq i}p_j\cdot E_j+\sum\limits_{j\neq i}p_j\cdot\sum\limits_{k=0}^{n-1}f_k\\&=\text{ans}+\sum\limits_{j\neq i}p_j\cdot\sum\limits_{k=0}^{n-1}f_k\\&=\text{ans}+(1-p_i)\cdot \sum\limits_{k=0}^{n-1}f_k\end{aligned} \]

所以

\[\begin{aligned}\sum\limits_{i=1}^{n}R_i&=n\cdot\text{ans}+(n-1)\cdot\sum\limits_{k=0}^{n-1}f_k\end{aligned} \]

只要求出 \(R\)\(f\),我们就可以得到 \(\text{ans}\)

对于 \(f\),我们有

\[f_i=\begin{cases}n-1,&\text{if }i=0\\\dfrac{i}{n}\cdot\left(1+f_{i-1}+f_i\right)+\dfrac{n-i}{n}\cdot\left(\dfrac{1}{n-1}+\dfrac{n-2}{n-1}\cdot\left(1+f_i\right)\right),&\text{if }i\neq0\end{cases} \]

对于 \(R\),我们有

\[R_i=\sum\limits_{j=i}^{n-1}f_j \]

线性递推出 \(f\) 即可解出 \(\text{ans}\),总时间复杂度为 \(O(n)\)

posted @ 2021-01-26 10:51  feiko  阅读(115)  评论(0编辑  收藏  举报