Finding Expected Value简易题解

Finding Expected Value简易题解

Part1

先不考虑有 $ -1 $ 的情况

我们可以将本题转化成这样一个模型。一共有\(k\)个人,每人手上有\(x_i\)个饼干,保证\(\sum x_i=n\)。(\(k,n\)同原题意)

现在有如下操作:

1.每次等概率随机一个人\(i\),保证\(i\)手头上有饼干。

2.再等概率随机一个人\(j\),可以满足\(i=j\)

3.从\(x_i\)中任意拿出一个饼干,由\(i\)交予\(j\)

直到所有饼干归于某人,结束以上随机操作。

求出期望操作次数。

考虑记\(E(i)\)表示所有饼干都到\(i\)手上结束的期望次数,

\(P(i)\)表示所有饼干都到\(i\)手上结束的概率,

\(E'(i)\)表示所有饼干都到\(i\)手上才结束,且满足所有饼干在其他人手上时不结束的期望次数,

\(p(i,x)\)表示操作\(x\)次,结束于\(i\)这个人的概率。

显然有\(\displaystyle E(i)=\sum_{x=0}^{\infty}x*p(i,x),P(i)=\sum_{x=0}^{\infty}p(i,x),\sum_{i=1}^kP(i)=1\).

考虑所有饼干都在\(j\)手上时,全部转移给\(i(i\not=j)\)的期望步数,显然是一个常数,设为\(C\)

那么有\(\displaystyle E(i)=E'(i)-\sum_{j\not=i}(E(j)+P(j)*C)\).

关于\(E(j)+P(j)*C\)可以理解成所有饼干先给\(j\)在给\(i\),期望步数为\(\displaystyle \sum_{x=0}^{\infty}(x+C)*p(j,x)=\sum_{x=0}^{\infty}x*p(j,x)+C\sum_{x=0}^{\infty}p(j,x)=E(j)+P(j)*C\).

\(\displaystyle E(i)=E'(i)-\sum_{j\not=i}(E(j)+P(j)*C)\)

\(\Rightarrow\)\(\displaystyle E'(i)=\sum_{j=1}^kE(j)+C\sum_{j=1,j\not=i}^kp(j)=ans+C(1-P(i))\)

\(\Rightarrow\)\(\displaystyle \sum_{i=1}^kE'(i)=k*ans+(k-1)C\)

\(\Rightarrow\)\(\displaystyle ans=\frac{\sum_{i=1}^kE'(i)-(k-1)C}{k}\)

考虑\(E'(i)\)怎么算,显然至于初始饼干数\(x_i\)有关,

\(f(x)\)表示当前某人有\(x\)个,他能集齐\(n\)个的期望

\[f(x)= \begin{cases} \frac{1}{k}f(x+1)+\frac{k-1}{k}f(x )+1& x=0\\ \frac{x}{n}(\frac{k-1}{k}f(x-1)+\frac{1}{k}f(x))+\frac{n-x}{n}(\frac{1}{k}f(x+1)+\frac{k-1}{k}f(x))+1& 1 \leq x \leq n-1 \\ 0 &x=n \end{cases} \]

\(f\)的差分数组\(g(x)=f(x)-f(x+1)\)

\(x=0\)时,解得\(g(0)=k\)

\(x>0\)时,设

\(Xg(x-1)+Yg(x)+Z\)

\(=X(f(x-1)-f(x))+Y(f(x)-f(x+1))+Z\)

\(=Xf(x-1)+(Y-X)f(x)-Yf(x+1)+Z=0\)

根据\(dp\)方程,由待定系数法求得

\(\begin{cases} X=\frac{x*(k-1)}{n*k} \\ Y=\frac{x-n}{n} \\ Z=1 \end{cases}\)

于是便有\(g\)的递推式\(g(x)=\frac{x(k-1)g(x-1)+kn}{n-x}\),于是可以\(O(n)\)\(f(x)\)

不难想到之前设的常数\(C=f(0)\)

\(\displaystyle ans=\frac{\sum_{i=1}^kf(x_i)-(k-1)f(0)}{k}\)

Part2

现在我们加上有\(-1\)的要求,无非就是在\(P art1\)的基础上求出\(E(ans)\)

考虑期望的线性性\(E(ans)=\frac{\sum_{i=1}^kE(f(x_i))-(k-1)f(0)}{k}\),\(k,f(0)\)均为常数。

那么考虑\(E(f(x))\)怎么求。

设有\(cnt\)\(-1\)

对于第\(i\)个人已经有了\(x_i\),再从\(cnt\)\(-1\)\(j\)个出来给\(i\)这个人,剩下的分配给别人。

取出的\(j\)服从\(B(cnt,\frac{1}{k})\)这样的二项分布,暴力展开求出\(E(f(x))\)

\(\displaystyle E(f(x_i))=\sum_{j=0}^{cnt}f(x_i+j)C(cnt,j)(\frac{1}{k})^j(1-\frac{1}{k})^{cnt-j}\),这样计算的复杂度为\(O(n)\)

注意到不同\(x_i\)大约有\(\sqrt{n}\)个。可以记一个桶,对于相同的\(x_ i\)一起处理,求\(E(f(x_i))\)即可,复杂度为\(O(n\sqrt{n})\)

posted @ 2021-10-05 09:26  Stump  阅读(78)  评论(0编辑  收藏  举报