【概率dp】【BZOJ2318】Spoj4060 game with probability Problem
2015年7月06日 21:59
Description
有n个石子,A和B轮流做游戏,A先手,每次抛硬币,若正面朝上就拿走一枚石子,否则不作任何事。取到最后一颗石子的人胜利。AB都想取胜,A有p机率抛到想要的,B有q(p,q>=0.5)。求A获胜的概率。
Solution
设f[i]表示A为先手A赢的概率,g[i]为B为先手A赢的概率。
对于f[i],显然从max(g[i],g[i-1])转移,g[i]类似,不过要从min转移。
那么有f[i]=p*g[i-1]+(1-p)*g[i],g[i-1]>g[i]
g[i]=q*f[i-1]+(1-q)*f[i],f[i-1]<f[i]
讨论一下发现,若f[i-1]>g[i]那么f[i-1]<f[i]一定成立,反之亦然。
于是化简上面的式子得到
f[i]=(p*g[i-1]+q*(1-p)*f[i-1])/(p+q-p*q);