[JZOJ100004]NOI2017模拟.4.1 Dice
Posted ZLTJohn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[JZOJ100004]NOI2017模拟.4.1 Dice相关的知识,希望对你有一定的参考价值。
题目大意
给你一个骰子,点数1~6,每个点数都有抛出的概率P_i。你要抛n轮,每轮中,如果抛出了跟上一轮一样的点数,要重新抛。
现在求两个值,n轮点数和ans的期望E[ans],方差的期望V[ans]。
方差定义:对于一个点数和为x的局面,它的方差为
(x−E1)2
n<=100000,保证六个面概率加起来严格为1,精度误差
10−4
。
分析
首先看看E[ans]怎么算。
设Xi为第i轮点数期望,则E[ans]=E(∑Xi)=∑Xi=∑∑6j=1P(第i轮甩出j)∗j
考虑怎么求P(~)。
P(第i轮甩出j)=∑6k=1P(i−1轮抛出k)∗P(i−1轮抛出k后,i轮抛出j)
注意到:
1,P(第1轮甩出j),就是
Pj
2,最后面的那个P是可以提前算的,设g[x][y]为上次抛了x,这次抛y的概率。因为上次抛了x,这次不能抛x,设方程
g[x][y]=Py+Px∗g[x][y],可得g[x][y]=Py1−Px
那么我们可以递推出所有的P
设h[i][j]表示第i轮扔出j的概率,则
h[i][j]=∑6k=1h[i−1][k]∗g[k][j]
E[ans]=所有h[i][j]∗j
就算出了E[ans]。
接下来要要算V[ans]了。
搞一波事情:
V[ans]
=E[(ans−E[ans])2]
=E[ans2+E[ans]2−2∗ans∗E[ans]]
=E[ans2]+E[ans]2−2∗E[ans]∗E[ans]](不相关的变量期望可以分开算)
=E[ans2]−E[an以上是关于[JZOJ100004]NOI2017模拟.4.1 Dice的主要内容,如果未能解决你的问题,请参考以下文章