POJ3716-Panda's Birthday Present题解
2014-08-09 10:37
190 查看
题目大意:
四个骰子,每个骰子的六面随机印有0或1,每一次投掷,记录1的个数。现已知道前两次1的个数,求第三次投掷出现1的个数的期望。样例:
Simple input
2 2
Simple output
2.000
Simple input
4 4
Simple output
2.571
算法分析:
这是一道条件概率的简单题,只要掌握条件概率的公式,基本就能得到结果,但是对于像我这种战斗力为0的渣渣,对着题解硬是看了好几天,才推出了最后的结果。所以我觉得很有必要写一片详细的题解。
1、由于4个骰子是相互独立的,所以可以分开计算。假设每个骰子再次出现1的期望为Ei,那么对于总的期望E=sum(Ei|i=[1,4]);
2、针对每一个骰子,前两次出现的可能情况共有四种(00)(01)(10)(11),只要分别计算就行;
3、现在就以(11)为例,计算P(X=1|X=11):
P(X=1|X=11)= sum(P(X=1|T=t)* P(T=t|X=11))
P(X=1|T=t)= t / 6
P(T=t|X=11)= P(X=11|T=t)*P(T=t)/ P(X=11)
P(X=11|T=t)= (t / 6)^2
P(T=t)= C(6,t)/ 2^6 = C(6,t)/ 64
P(X=11)= sum(P(X=11|T=t)*P(T=t))
那么P(X=1|X=11) = sum(P(X=1|T=t)* P(T=t|X=11))
= sum(P(X=1|T=t) * P(X=11|T=t)*P(T=t) / P(X=11))
= sum(P(X=111|T=t)* P(T=t))/ sum(P(X=11|T=t)*P(T=t))
接下来直接笔算出结果:
E(111)= P(X=1|X=11)
得:E(001)= 5 / 14
E(011)= E(101)= 1 / 2
E(111)= 9 / 14
问题到这里似乎可以完美解决了,接下来只要穷举每个骰子出现的情况就可以得到结果。
但还有没有更简单的计算方法呢???
答案是肯定的:
现在,我们不妨设G(0)为0对与结果的贡献率,G(1)为1对结果的贡献率:
求解:E(001)= G(0)* 2
E(101)= E(011)= G(1)+G(0)
E(111)= G(1)* 2
求解此方程组可知G(0)= 5 / 28;G(1)= 9 / 28
即无论前两次的情况如何,其中每出现一次1,那么结果就会增加G(1)。并且,该式子恒成立。那么,原问题就变为(M+N)*G(1)+ (8-M-N)*G(0)= (M+N+10)/ 7。
相关文章推荐
- HDU 2995 Another Panda's Birthday Present(条件概率|概率生成函数 )
- PKU 3716 Panda's Birthday Present (概率问题)
- poj 3761 Panda's Birthday Present (数学公式推导~~推?)
- POJ 3716 Panda's Birthday Present 可能会
- Light OJ - 1008 - Fibsieve`s Fantabulous Birthday 题解
- 【DP】【01背包】【完全背包】Birthday 题解
- birthday present
- 【题解】 2015 ACM/ICPC Asia Regional Changchun Online (5+2)
- [题解]bzoj3295 CQOI2011动态逆序对
- Beads题解
- POJ 3246:Game 题解 (凸包)
- LeetCode题解——Reverse Linked List
- PAT题解——1071. Speech Patterns (25)
- [LeetCode]题解(python):018-4Sum
- 【贪心】BZOJ3410(Usaco2009 Dec)[Selfish Grazing 自私的食草者]题解
- codeforces round 321 div2 题解
- [题解]hdu1542 Atlantis
- [LeetCode]题解(python):020-Valid Parentheses
- Codeforces Round #429 (Div. 2) 题解
- LeetCode题解:Populating Next Right Pointers in Each Node