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 ot=j)$的期望步数,显然是一个常数,设为$C$

那么有$displaystyle E(i)=E'(i)-sum_{j ot=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}xp(j,x)+Csum_{x=0}^{infty}p(j,x)=E(j)+P(j)*C$.

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

$Rightarrow$$displaystyle E'(i)=sum_{j=1}kE(j)+Csum_{j=1,j ot=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)= egin{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)+Y=0$。

根据$dp$方程,由待定系数法求得

$egin{cases} X=frac{x(k-1)}{nk} 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(nsqrt{n})$。

原文地址:https://www.cnblogs.com/Stump/p/15368011.html