http://blog.csdn.net/qq_24451605/article/details/44102963 hdu 4035经典概率dp求期望
来源:互联网 发布:dailyview网络温度计 编辑:程序博客网 时间:2024/05/17 23:34
求期望要用到全期望公式来来分类讨论:
k[i]:表示死掉回到1的概率
e[i]:表示成功逃走的概率
那么我们设定随机变量X:在节点i处开始,逃走所走的边数
那么E[i]就是从节点i开始,要逃走的边数的期望
如果i是叶子节点:
E[i] = k[i]*E[1] + e[i]*0 + (1-k[i]-e[i])*(E(parent(i))+1); (1)
如果i不是叶子节点:
与i相连的节点的总数为m,j是i的孩子节点
E[i] = k[i]*E[1] + e[i]*0 + (1-k[i]-e[i])/m*(E(parent(i))+1) + (1-k[i]-e[i])/m*sum(E[j]+1); (2)
为了简化计算过程,我们设Ai = k[i] , Bi = (1-k[i]-e[i])/m , Ci = Bi*sum(E[j]+1)+Bi;
那么E[i] = Ai*E[1] + Bi*E[p]+ Ci; (3)
导出E[j] = Aj*E[1] + Bj*E[i] + Cj; (4)
进而得到sum(E[j]) = sum ( Aj*E[1] + Bj*E(i) + Cj ) (5)
把(5)代入到(3)中得到
E[i] = Ai*E[1] + Bi*E[p] + Bi*sum(Aj*E[1] + Bj*E[i] + Cj + 1 ) + Bi (6)
=>(1-(1-ki-ei)/m*SUM(Bj))*E(i)=(ki+(1-ki-ei)/m*SUM(Aj))*E(1)+(1-ki-ei)/m *E(father)+(1-ki-ei+(1-ki-ei)/m*SUM(cj));
所以与上述2式对比得到:
Ai=(ki+(1-ki-ei)/m*SUM(Aj)) / (1-(1-ki-ei)/m*SUM(Bj))
Bi=(1-ki-ei)/m / (1-(1-ki-ei)/m*SUM(Bj))
Ci=(1-ki-ei+(1-ki-ei)/m*SUM(cj)) / (1-(1-ki-ei)/m*SUM(Bj))
所以Ai,Bi,Ci只与i的孩子Aj,Bj,Cj和本身ki,ei有关
于是可以从叶子开始逆推得到A1,B1,C1
在叶子节点:
Ai=ki;
Bi=(1-ki-ei);
Ci=(1-ki-ei);
而E(1)=A1*E(1)+B1*0+C1;
=>E(1)=C1/(1-A1);
当A趋近于1时,那么无解,精度卡到1e-9才能过
k[i]:表示死掉回到1的概率
e[i]:表示成功逃走的概率
那么我们设定随机变量X:在节点i处开始,逃走所走的边数
那么E[i]就是从节点i开始,要逃走的边数的期望
如果i是叶子节点:
E[i] = k[i]*E[1] + e[i]*0 + (1-k[i]-e[i])*(E(parent(i))+1); (1)
如果i不是叶子节点:
与i相连的节点的总数为m,j是i的孩子节点
E[i] = k[i]*E[1] + e[i]*0 + (1-k[i]-e[i])/m*(E(parent(i))+1) + (1-k[i]-e[i])/m*sum(E[j]+1); (2)
为了简化计算过程,我们设Ai = k[i] , Bi = (1-k[i]-e[i])/m , Ci = Bi*sum(E[j]+1)+Bi;
那么E[i] = Ai*E[1] + Bi*E[p]+ Ci; (3)
导出E[j] = Aj*E[1] + Bj*E[i] + Cj; (4)
进而得到sum(E[j]) = sum ( Aj*E[1] + Bj*E(i) + Cj ) (5)
把(5)代入到(3)中得到
E[i] = Ai*E[1] + Bi*E[p] + Bi*sum(Aj*E[1] + Bj*E[i] + Cj + 1 ) + Bi (6)
=>(1-(1-ki-ei)/m*SUM(Bj))*E(i)=(ki+(1-ki-ei)/m*SUM(Aj))*E(1)+(1-ki-ei)/m *E(father)+(1-ki-ei+(1-ki-ei)/m*SUM(cj));
所以与上述2式对比得到:
Ai=(ki+(1-ki-ei)/m*SUM(Aj)) / (1-(1-ki-ei)/m*SUM(Bj))
Bi=(1-ki-ei)/m / (1-(1-ki-ei)/m*SUM(Bj))
Ci=(1-ki-ei+(1-ki-ei)/m*SUM(cj)) / (1-(1-ki-ei)/m*SUM(Bj))
所以Ai,Bi,Ci只与i的孩子Aj,Bj,Cj和本身ki,ei有关
于是可以从叶子开始逆推得到A1,B1,C1
在叶子节点:
Ai=ki;
Bi=(1-ki-ei);
Ci=(1-ki-ei);
而E(1)=A1*E(1)+B1*0+C1;
=>E(1)=C1/(1-A1);
当A趋近于1时,那么无解,精度卡到1e-9才能过
0 0
- http://blog.csdn.net/qq_24451605/article/details/44102963 hdu 4035经典概率dp求期望
- hdu 4035 经典概率dp求期望
- JAVA经典面试题(http://blog.csdn.net/chow__zh/article/details/7723977)
- C++中placement new操作符(经典) http://blog.csdn.net/zhangxinrun/article/details/5940019
- 求linux 电池电量的shell http://blog.csdn.net/sunears/article/details/1658823
- DP基础问题若干(ACM/ICPC) 来自http://blog.csdn.net/accry/article/details/6607593
- HDU部分题目算法归纳(转自http://blog.csdn.net/lizuqingblog/article/details/17392941)
- http://blog.csdn.net/IBM_hoojo/article/details/5688947
- http://blog.csdn.net/chenlaic/article/details/6143235
- http://blog.csdn.net/eaglewood2005/article/details/4335052
- http://blog.csdn.net/mchp/article/details/3995970
- http://blog.csdn.net/v_july_v/article/details/6015165
- http://blog.csdn.net/masterz/article/details/6232585
- http://blog.csdn.net/perfectpdl/article/details/6442847
- http://blog.csdn.net/eroswang/article/details/1967243
- http://blog.csdn.net/zhvsby/article/details/5986645
- http://blog.csdn.net/dz45693/article/details/6183645
- http://blog.csdn.net/david_lv/article/details/5798003
- linux中Cron定时任务系统命令详解
- ROS入门_1.12 使用 rosed 编辑ROS中的文件
- virtualenv的安装
- 2016总结
- 写出一个小程序,求出100-200之间的质数的个数并输出这些数
- http://blog.csdn.net/qq_24451605/article/details/44102963 hdu 4035经典概率dp求期望
- android中活动、服务之间传值简单总结笔记
- 资源网解压密码
- oracle top用法
- 【NOIP2014八校联考第2场第2试9.28】单词接龙
- 用canvas实现围绕旋转动画
- 探究MFC之Dialog窗口最大化时控件自适应
- Vector源码分析
- 【SCOI2016】幸运数字 题解 + 线性基介绍