期望Dp总结

【学习资料】

【笔记整理】

  • 离散随机变量$X$:从一个有限或可数无限的样本空间$S$到实数的函数
  • 随机变量$X$的概率密度函数:若定义事件$X=x$表示$\{s\in S,X(s)=x\}$,则$f(x)=\text{Pr}\{X=x\}=\sum_{s\in S,X(s)=x}\text{Pr}\{s\}$。
  • 根据概率公理,可知:$0\le \text{Pr}\{X=x\}\le 1$,且$\sum\text{Pr}\{X=x\}=1$。
  • 根据条件概率,可知:$\text{Pr}\{X=x\mid Y=y\}=\frac{\text{Pr}\{X=x\text{ and }Y=y\}}{\text{Pr}\{Y=y\}}$。
  • 随机变量$X$与$Y$独立:对于所有的$x,y$,事件$X=x$与$Y=y$独立,可以等价认为满足$\text{Pr}\{X=x\text{ and }Y=y\}=\text{Pr}\{X=x\}\text{Pr}\{Y=y\}$。

期望$E[X]$:

  • 全期望公式:$E[X]=\sum_{x}x\cdot \text{Pr}\{X=x\}$(实际上也是期望的定义)。
  • 期望的线性性质:$E[X+Y]=E[X]+E[Y]$(当$X,Y$不独立时,该性质也成立),$E[aX]=aE[x]$。
  • 当$n$个随机变量$X_i(1\le i\le n)$互相独立时,有:$E[\prod_{i=1}^n X_i]=\prod_{i=1}^n E[X_i]$。

【题集】

HDU3853 LOOPS

从左上角的$(1,1)$走到右下角的$(n,m)$,每动一步会消耗2点魔法值,分别有$p_1,p_2,p_3$的概率留在原地,向右走一格,向下走一格,求期望消耗的魔法值。

可以采用“直接定义Dp状态”的做法。定义通常是逆序的形式:$dp[i][j]$表示从$(i,j)$到$(n,m)$的期望消耗魔法值。有转移方程式:

$$dp[i][j]=p_1\cdot dp[i][j]+p_2\cdot dp[i+1][j]+p_3 \cdot dp[i][j+1]+2$$

整理后得到:

$$dp[i][j]=\frac{p_2}{1-p_1} dp[i+1][j]+\frac{p_3}{1-p_1}dp[i][j+1]+\frac{2}{1-p_1}$$

可以发现Dp转移是填表法,所以更新必须要从后往前进行。

题意保证了$p_1+p_2+p_3=1$,可以看成是由“概率公理”推导得到的$\sum\text{Pr}\{X=x\}=1$的弱化版,而基于此才能使用全期望公式。

全期望公式很显然是填表的形式,但题面描述的“向右/下走一格”是刷表的形式,这一点会造成思想上的冲突。

 

HDU4035 Maze

给定一棵以1为根的树,树边为双向边,边权均为1。现从1出发去往其他节点,有概率$K_i$因死亡而回到根节点1,有概率$E_i$因找到隐藏出口而退出迷宫,否则等概率去往所有与$i$直接连边的节点,求退出迷宫时行走过的期望路径长度。$K_1=E_1=0$。

题面给出了“到节点后所有发生事件”的概率,且只有该事件集的概率和为1。所以根据这条性质,再结合上题套路,有$dp[i]$表示从$i$点出发,退出迷宫的期望路径长度。转移方程式:$$dp[i]=K_i\cdot dp[1]+E_i\cdot 0+\frac{1-K_i-E_i}{|G(i)|}\cdot \sum_{v\in G(i)} (dp[v]+1)$$

方程中的$G(i)$表示所有与$i$直接“相邻”的点集。发现这个转移方程式存在两处,整理时将这两个部分单独抽出,得到:

$$dp[i]=K_i\cdot dp[1]+a_i\cdot dp[fa[i]]+a_i\cdot \sum_{v\in son(i)}dp[v]+b_i$$

方程式中的$a_i=\frac{1-K_i-E_i}{|G(i)|}$,$b_i=a_i\cdot |G(i)|$。

转移中出现环的概率Dp,一般都需要繁杂的数学运算迭代,迭代方式还会受到题面、精度等的限制。显然我们对$\sum_{v\in son(i)}dp[v]$做迭代,因为所有叶子结点的转移方程式中均没有该部分,即这个迭代在叶子节点就会停止。一个技巧是将迭代一层后的转移式记作$dp[i]=A_i\cdot dp[1]+ B_i\cdot dp[fa[i]]+C_i$的形式(即将每个构成环的转移部分都当做不定量,只处理系数;不构成环的部分整体视为常量),有:

$$\sum_{v\in son(i)}dp[v]=\sum_{v\in son(i)}\{A_v\cdot dp[1]+B_v\cdot dp[i]+C_v\}$$

代入标准方程式,整理后可以得到:

$$(1-a_i\cdot \sum B_v)dp[i]=(K_i+a_i\cdot \sum A_v)dp[1]+a_i\cdot dp[fa[i]]+(a_i\cdot \sum C_v+b_i)$$

所以:

$$A_i=\frac{K_i+a_i\cdot \sum A_v}{1-a_i\cdot \sum B_v}\quad B_i=\frac{a_i}{1-a_i\cdot \sum B_v}\quad C_i=\frac{a_i\cdot \sum C_v+b_i}{1-a_i\cdot \sum B_v}$$

注意特殊情况:

  • $\forall i=\text{leaf},A_i=K_i,B_i=a_i,C_i=b_i$。
  • $dp[1]=A[1]\cdot dp[1]+B[1]\cdot 0+C[1]$,若$A[1]\to 1$则无解,否则$dp[1]=\frac{C[1]}{1-A[1]}$。

 

HDU4336 Card Collecter

一包零食内有$p_i(1\le i\le n,\sum p_i\le 1)$的概率附赠第$i$种卡牌,也可能不附赠卡牌。求收集完所有卡牌需要购买的期望零食包数。

定义$dp[S]$表示已收集$S$的卡牌集,最后收集到全集的期望零食包数。转移方程式:

$$dp[S]=\sum_{i=1}^n \begin{cases}p_i\cdot dp[S] & 2^i \in S\\ p_i\cdot dp[S|2^i] & 2^i\not\in S\end{cases}$$

将右侧的$dp[S]$放到左侧合并即可。

 

HDU4405 Aeroplane chess

从坐标0出发,每次通过甩骰子的方式等概率走1~6步,如果该位置有飞机场则直接飞到目标地点而不甩骰子,问到达$\ge n$的坐标点的期望甩骰子数。

定义$dp[i]$表示从坐标$i$出发,到达坐标$\ge n$的期望甩骰子数,$\text{to}[i]$表示坐标$i$乘坐飞机到达的目标地点,若$\text{to}[i]=-1$,则表示没有飞机场。

$$dp[i]=\begin{cases}\left(\sum_{j=1}^{6}\frac{dp[i+j]}{6}\right)+1 & \text{to}[i]=-1\\ dp[\text{to}[i]] &\text{to}[i]\ne -1\end{cases}$$

 

HDU4586 Play the Dice

给定一个$n$面骰子,每一面有一个数$a_i$,表示获得的钱;当该面为特殊面时,可以再甩一次。求期望获得的钱数。只有当无限获得钱的情况时才输出inf。

题面比较玄学。输出inf的情况只可能在骰子每一面都是特殊面,且至少有一面$a_i>0$的时候取得。定义$dp[i]$表示甩到$i$后期望获得的钱数。转移方程式:

$$dp[i]=\begin{cases}a_i & \text{not special}\\ \sum_{j=1}^n \frac{dp[j]}{n}+a_i & \text{special}\end{cases}$$

将$n$条式子全部相加,通过整理可以得到$\frac{n-m}{n}\sum_{i=1}^n dp[i]=\sum_{i=1}^n a_i$,而答案即为$\sum_{i=1}^n \frac{dp[i]}{n}$。

 

HDU4649 Professor Tian

有$n+1$个$\lt 2^{20}$的数排成一列,中间有$n$个位运算符,现在每个位运算符和其后相邻的一个数,都有$p_i$的概率消失,求运算完整个式子之后的期望结果。

若“直接定义Dp状态”,有$dp[i][S]$表示已处理前$i$个运算符,目前的结果是$S$的概率,最后加权求和即可,时间复杂度$O(n\cdot 2^{20})$,会TLE,尝试改变Dp定义。根据题面的提示,思考方向不应停留在十进制层面上,应从二进制的角度去考虑。

我们可以从“期望的线性性质”入手去定义Dp:期望答案等于各二进制位的期望值,即各二进制位为1的概率加权和,所以定义$dp[i][j]$表示处理前$i$个运算符,第$j$个二进制位为1的概率,时间复杂度$O(n\cdot 20)$。有转移方程式:

转移由两部分组成,若当前运算符消失则继承上次的概率,否则按照三个运算符的性质讨论即可。

 

HDU4652 Dice

有一个$m$面骰子,每面上的数字均不同,甩到每面的概率相等。回答以下两种形式的问题:

(1) 0 m n,最后$n$次甩出的结果均相同;

(2) 1 m n,最后$n$次甩出的结果两两不相同。

 

转载于:https://www.cnblogs.com/kanosword/p/7772018.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值