首页 > 技术文章 > CF1392H

Grice 2021-02-27 23:03 原文

题意

给定\(n,m\),有\(n\)张好牌,\(m\)张坏牌。
每轮游戏如下:
一开始将牌打乱,然后从前往后抓牌,若抓到坏牌,退出此轮,如果所有的好牌都抓过,则结束游戏,否则开启一轮新游戏。
注意之前的某轮抓的牌也称其抓过
求抓的牌的期望次数。

做法一

\(\begin{aligned} E(抓牌次数)&=\sum\limits_{i=1}^{\infty}E(第i轮的贡献)\\ &=\sum\limits_{i=1}^{\infty}P(前i-1轮没有抓过所有的好牌)\cdot E(第i轮的抓牌次数)\\ &=E(某一轮的抓牌次数)\cdot \sum\limits_{i=1}^{\infty}P(前i-1轮没有抓过所有的好牌)\\ &=E(某一轮的抓牌次数)\cdot E(进行的轮数)\\ \end{aligned}\)

\(E_1=E(某一轮的抓牌次数)\),有很多种计算的方式,这里给出一种较为简单的方法。
一定会抓一张坏牌,这里贡献为\(1\),而一张好牌被抓,概率为在所有坏牌的前面。
\(E_1=1+\frac{n}{m+1}\)

考虑计算\(E(进行的轮数)\)
\(f_i\)为:以还有\(i\)张好牌没抓过的状态开始,期望还要抓多少轮
还有\(i\)张好牌没抓过,那么其实\(n-i\)张已经抓过的好牌可以完全忽略了。
那么现在只需要考虑好牌(抓过的全部忽略掉,现在在的均为未抓过的),与坏牌。好牌则继续抓,坏牌则开启下一轮。

\[\begin{cases} f_i=\frac{i}{i+m}f_{i-1}+\frac{m}{i+m}(f_{i}+1),~~~~~~~~(i>1)\\ f_1=m+1.\\ \end{cases}\]

\(f_i=m+1+\sum\limits_{k=2}^i \frac{m}{k}\)

做法二

这里算\(E(进行的轮数)\)有点不同
考虑\(\text{min-max}\)容斥
答案为\(\sum\limits_{i=1}^n {n\choose i}(-1)^{i+1}g_i\),其中\(g_i\)为钦定\(i\)张好牌,最小的出现轮数的期望

显然\(g_i=\frac{m+i}{i}\)

做法三

来复读一下一个nb做法

考虑\(\text{min-max}\)反演,单独看一个集合\(T\),令\(k=|T|\)
\(g_i\)为一轮进行了\(i+1\)次抓牌(即抓了\(i\)张好牌),没有抓过集合\(T\)中牌的概率,令\(G_k(x)\)为生成函数,显然有:

\[G_k(x)=\sum\limits_{i=0}^{\infty}\frac{m{n-k\choose i}i!(n+m-i-1)!}{(n+m)!}x^{i+1} \]

\(f_i\)为结束时抓了\(i\)次牌的概率,令\(F(x)\)为生成函数,显然有:

\[\begin{aligned} F(x)&=\sum\limits_{k=1}^n {n\choose k}(-1)^{k+1}(G_0(x)-G_k(x))(\sum\limits_{i=0}^{\infty}G_k^i(x))\\ &=\sum\limits_{k=1}^n {n\choose k}(-1)^{k+1}(G_0(x)-G_k(x))\frac{1}{1-G_k(x)}\\ &=1+\sum\limits_{k=1}^n {n\choose k}(-1)^{k}(1-G_0(x))\frac{1}{1-G_k(x)}\\ \end{aligned}\]

\(ans=\frac{dF(x)}{dx}\),由于\(G_0(1)=1\),得到:

\[\frac{dF(1)}{dx}=-\sum\limits_{k=1}^n {n\choose k}(-1)^k G_0'(1)\frac{1}{1-G_k(1)} \]

\(G_0'(1)\)容易在线性时间内求得

考虑\(G_k(1)\)的组合意义:\(T\)集合内的数在第一次出现坏牌的位置后,其余的任意,这种概率,容易得到:\(G_k(1)=\frac{m{n+m\choose n-k}(n-k)!(m+k-1)!}{(n+m)!}\)

推荐阅读