当前位置: 首页 > news >正文

概率期望

并非,应该改名为 dp 专题。

经常的转化是,可以把正的过程倒过来,令 \(f\) 为某个状态到最终状态的期望,这样 dp 有时候会更方便。

天依宝宝可爱!


方差

  • 定义随机变量 \(X\) 的方差 \(D(X) = E((X - E(X))^2)\),因为期望就是平均值,所以这个式子的含义就是 \(X\) 的每个值与 \(X\) 的平均值的差的平方的平均值,和初中所学的方差有一点相似之处。

  • 方差的平方根称为标准差,记作 \(\sigma(X) = \sqrt {D(X)}\)

  • 方差反应了随机变量的离散程度,方差越大,随机变量的取值越分散。

  • 由期望的线性性,可以得到方差的一个更好用的表达式:

    \[D(X) = E(X^2) - E(X)^2 \]

    推导过程:

    \[\begin{aligned} D(X) & = E((X - E(X))^2) \\ & = E(X^2 + E(X)^2 - 2XE(X)) \\ & = E(X^2) + E(X)^2 - 2E(X)^2 \\ & = E(X^2) - E(X)^2 \end{aligned} \]

    其中,第三步的理由是:因为第二步中的 \(E(X)\) 实际上就相当于一个常数了,因为 \(X\) 是固定的,它的期望也是固定的。所以就直接当常数乘出去即可。

  • 一个小性质:\(D(aX) = a^2 D(X)\),其中 \(a\) 为常数。

天依宝宝可爱!


CF148D

思维难度:\(\color{#F39C11} 橙\) *900

概率 dp 板子。令 \(f_{i,j}\) 表示 \(i\) 个白球 \(j\) 个黑球 A 获胜的概率,考虑当前轮拿球的情况,显然有转移:

\[\begin{aligned} f_{i,j} = & \frac i {i+j} \\ & + \frac i {i+j} \times \frac {j-1} {i+j-1} \times \frac i {i+j-2} \times f_{i-1,j-2} \\ & + \frac i {i+j} \times \frac {j-1} {i+j-1} \times \frac {j-2} {i+j-2} \times f_{i,j-3} \end{aligned} \]

submission

天依宝宝可爱!


POJ 3071

思维难度:\(\color{#F39C11} 橙\) *900

还是板子,直接暴力 dp 即可,令 \(f_{i,j}\) 为队伍 \(i\)\(j\) 轮后存活的概率,枚举每个可能与 \(i\) 在第 \(j\) 轮相遇的队伍,二进制搞一下,暴力转移,复杂度是 \(O(2^{2n}n)\) 的。

sb poj 一会儿 CE 一会儿 T 一会儿 WA 的,反正思路是对的,代码也挺对的,不调了。猜测是多测多输入了或者少输入了的问题。

WA submission

天依宝宝可爱!


CF768D

思维难度:\(\color{#F39C11} 橙\) *1100

注意到概率期望完全不是同一个东西,不要弄混了。概率是不去考虑每个变量取了多少的,只考虑一个变量发生的概率。

显然 dp 状态就是令 \(f_{i,j}\) 表示 \(i\) 天取了 \(j\) 个物品的概率。转移直接考虑取的是否是新物品即可,有式子:

\[f_{i,j} = \frac {k-(j-1)} k f_{i-1,j-1} + \frac j k f_{i-1,j} \]

注意到 \(p \le 1000\),所以 \(\frac p {2000} \le \frac 1 2\),所以要求的概率很小,对应的天数实际上也很小,所以直接暴力 dp 是可以的。发现 \(k=1000\) 在天数 \(10000\) 的时候概率已经到达了 \(>0.9\),故值域取 \(10000\) 即可。

submission

天依宝宝可爱!


POJ 2096

思维难度:\(\color{#FFC116} 黄\) *1300

首先题面很 shi,简要题意:

在一个 \(n \times m\) 的矩阵中,每次操作等概率撒点(包括已经撒过点的位置),求每行每列都撒过点的期望操作次数。

显然有一个显然的 dp,就是令 \(f_{i,j}\) 为填满 \(i \times j\) 的矩阵的操作次数,转移考虑最后一次撒点撒到了什么位置,有:

\[f_{i,j} = \frac {(n-i+1) \times (m-j+1)} {n \times m} f_{i-1,j-1} + \frac {(n-i+1) \times j} {n \times m} f_{i-1,j} + \frac {i \times (m-j+1)} {n \times m} f_{i,j-1} + \frac {i \times j} {n \times m} f_{i,j} + 1 \]

移项即可。

但是注意到,在 \(i=n , j=m\) 的时候,\(i \times j = n \times m\),于是左右两边的 \(f_{i,j}\) 就约掉了,就没法转移了。

那么如何处理呢,只能考虑换状态了。我们的目的是不让 \(f_{i,j}\) 的系数的分子可能成为 \(n \times m\),但发现好像怎么设计都无法避免,那就索性不避免了,直接把它当做初始状态来做!

所以,就可以得到一个新的状态,令 \(f_{i,j}\) 表示填满 \(i \times j\) 的矩阵距离填满 \(n \times m\) 剩余的操作次数,显然次数初始状态为 \(f_{n,m} = 0\),也不难写出转移式:

\[f_{i,j} = \frac {(n-i) \times (m-j)} {n \times m} f_{i+1,j+1} + \frac {(n-i) \times j} {n \times m} f_{i+1,j} + \frac {i \times (m-j)} {n \times m} f_{i,j+1} + \frac {i \times j} {n \times m} f_{i,j} + 1 \]

虽然 \(i \times j\) 还是可能等于 \(n \times m\),但是这种情况被放在了初始状态中,所以就相当于避免了它的出现!

submission

天依宝宝可爱!


洛谷 P1850

思维难度:\(\color{#FFC116} 黄\) *1400

怎么以前做过但是现在一点也不会了/jk

dp 是显然的,令 \(f_{i,j,0/1}\) 为前 \(i\) 节课申请换了 \(j\) 次,第 \(i\) 次是否申请的期望代价。

但是发现这样就没法确定第 \(i\) 次是否成功了,但是这是很重要的。

在这里卡住了。

考虑换状态?不行,这样就没法确定上个位置到底申请没申请,也就不能转移。

做法是直接枚举上一次和这一次是否换成功,概率分别为 \(p_{i-1}\)\(p_i\)

这样为什么是对的呢?不会重复乘一个概率吗?

回到状态定义,注意到状态只关心是否申请,不关心是否成功,所以就包含了成功和不成功两种情况,且两者的概率是已知的。而且在从 \(i-1\)\(i\) 转移的时候,决定新的代价的是 \((i-1,i)\) 的取值,与 \(i-1\) 之前的取值没有任何关联,所以代价就不会重复计算。

或者说,这是一个最小代价的期望而不是操作次数的期望,所以这一步之前的代价与这一步的代价是没有转移的概率关系的,毕竟求最小值是要枚举前面的每个状态来转移不是把前面的状态乘上概率再加起来

submission

天依宝宝可爱!


CF908D

思维难度:\(\color{#52C41A} 绿\) *1700

trick:

在状态 \(S\) 下,若一次操作以 \(p\) 的概率转移到状态 \(T\),以 \(1-p\) 的概率停留在状态 \(S\),那么从 \(S\) 转移到 \(T\) 的期望步数为 \(\frac 1 p\)

这个 trick 可以有效地避免算一些无穷级数相关的东西(状态可以达到无穷大)。虽然这个题貌似没用到。

dp 还是很显然的,令 \(f_{i,j}\) 为当前有 \(i\)\(\tt a\)\(j\)\(\tt ab\),到停止时的期望 \(\tt ab\) 个数,考虑在后面增加 \(\tt a\) 还是 \(\tt b\),有:

\[f_{i,j} = \frac {p_a} {p_a + p_b} f_{i+1,j} + \frac {p_b} {p_a + p_b} f_{i,j+i} \]

但是这样可以发现 dp 是没有边界的,\(i\) 可以趋近于无穷大。

不过稍微推一下式子,令 \(a = \frac {p_a} {p_a + p_b} , b = \frac {p_b} {p_a + p_b}\)。注意到当 \(i+j \ge k\) 时,显然 \(f_{i,j+i} = j+i\)。于是有:

\[\begin{aligned} f_{i,j} & = a f_{i+1,j} + b f_{i,j+i} \\ & = a f_{i+1,j} + b(j+i) \\ & = a (a f_{i+2,j} + b f_{i,j+i+1}) + b(j+i) \\ & = a (a f_{i+2,j} + b(j+i+1)) + b(j+i) \\ & = a^2 f_{i+2,j} + ab (j+i+1) + b(j+i) \\ & = a^3 f_{i+3,j} + a^2b (j+i+2) + ab (j+i+1) + b(j+i) \\ & = \cdots \\ & = \sum _{x=0} ^{+\infin} a^xb (i+j+x) \end{aligned} \]

为了方便,令 \(t = i+j\),把 \(b\) 拿出来,有:

\[f_{i,j} = b \sum _{x=0} ^{+\infin} a^x (t+x) \]

于是就需要求 \(\displaystyle \sum _{i=0} ^{+\infin} a^i (t+i)\) 这个无穷级数。

注意到是等差乘等比的形式,所以考虑错位相减,令:

\[s_n = \sum _{i=0} ^n a^i (t+i) \tag 1 \]

于是:

\[a s_n = \sum _{i=0} ^n a^{i+1} (t+i) \tag 2 \]

然后 \((1) - (2)\),则:

\[\begin{aligned} (1-a) s_n & = \sum _{i=0} ^n a^i (t+i) - \sum _{i=0} ^n a^{i+1} (t+i) \\ & = t + a(t+1) + a^2(t+2) + \cdots + a^n(t+n) - at - a^2(t+1) - a^3(t+2) - \cdots - a^{n+1}(t+n) \\ & = \sum _{i=0} ^n a^it + \sum _{i=0} ^n ia^i - \sum _{i=1} ^{n+1} a^it - \sum _{i=0} ^n ia^{i+1} \\ & = t - a^{n+1} t + \sum _{i=0} ^n i (a^i - a^{i+1}) \\ & = t - a^{n+1} t + (1-a) \sum _{i=0} ^n ia^i \end{aligned} \]

于是只需要求 \(\displaystyle \sum _{i=0} ^n ia^i\) 即可,显然也是个等差乘等比,还是错位相减,令 \(s'_n\) 等于这个东西,有:

\[s'_n = \sum _{i=0} ^n ia^i \tag 3 \]

\[as'_n = \sum _{i=0} ^n ia^{i+1} \tag 4 \]

\((3) - (4)\) 得:

\[\begin{aligned} (1-a) s'_n & = \sum _{i=0} ^n ia^i - \sum _{i=0} ^n ia^{i+1} \\ & = a + 2a^2 + 3a^3 + \cdots + na^n - a^2 - 2a^3 - \cdots -na^{n+1} \\ & = a + a^2 + a^3 + \cdots + a^n - na^{n+1} \\ & = \sum _{i=1} ^n a^i - na^{n+1} \end{aligned} \]

发现等比数列,对其求和,有:

\[\begin{aligned} (1-a) s'_n & = \sum _{i=1} ^n a^i - na^{n+1} \\ & = \frac {a (1-a^n)} {1-a} - na^{n+1} \end{aligned} \]

然后其实就不要把 \(1-a\) 除过去了,因为上面就是要求 \(\displaystyle (1-a) \sum _{i=0} ^n ia^i\),所以:

\[(1-a) s_n = t - a^{n+1} t + \frac {a(1 - a^n)} {1 - a} - n a^{n+1} \]

\(1-a\) 除过去,得:

\[\begin{aligned} s_n & = \frac t {1-a} - \frac {a^{n+1}t} {1-a} + \frac {a(1-a^n)} {(1-a)^2} - \frac{n a^{n+1}}{1-a} \\ & = \frac t {1-a} + \frac{a - a^{n+1}}{(1-a)^2} - \frac {(n+t) a^{n+1}} {1-a} \end{aligned} \]

至此就得到了 \(s_n\) 的通项,带入原式,得:

\[\begin{aligned} f_{i,j} & = \sum _{x=0} ^{+\infin} a^xb (t+x) \\ & = b \times \left( \frac t {1-a} + \frac {a - a^{\infin+1}} {(1-a)^2} - \frac {(\infin+t) a^{\infin+1}} {1-a} \right) \end{aligned} \]

注意到 \(0 < a < 1\),所以 \(\displaystyle \lim _{n \to \infin} a^n = 0\),于是与 \(a^{\infin+1}\) 有关的都可以看做 \(0\) 了。

然后,注意到最后一项中出现了一个 \(\infin \times a^{\infin}\) 的东西,这个趋近于多少呢?丢到 desmos 上即可。可以发现 \(\infin\) 的增长速度远小于 \(a^{\infin}\) 的下降速度,所以这个也是趋近于 \(0\) 的。

有:

\[\begin{aligned} f_{i,j} & = b \times \left( \frac t {1-a} + \frac a {(1-a)^2} \right) \\ & = \frac {bt} {1-a} + \frac {ab} {(1-a)^2} \end{aligned} \]

因为 \(b = 1-a\),所以进一步化简:

\[\begin{aligned} f_{i,j} & = t + \frac a b \\ & = i + j + \frac {\frac {p_a} {p_a + p_b}} {\frac {p_b} {p_a + p_b}} \\ & = i + j + \frac {p_a} {p_b} \end{aligned} \]

草草草终于推完了。

还有一点,就是在求 \(f_{0,0}\) 的时候,可以发现 \(f_{0,0} = a f_{1,0} + b f_{0,0}\),移项推一下得到 \(f_{0,0} = f_{1,0}\),所以直接求 \(f_{1,0}\) 即可。

submission

天依宝宝可爱!


http://www.sczhlp.com/news/6116/

相关文章:

  • 薪酬语法
  • 博客迁移至: https://github.com/lichengguo
  • 别再找了!这款轻量Web组态编辑器让你效率翻倍
  • 有坑的题目
  • Linux - 安装JDK 01
  • 2025.8.5 总结
  • Perforce P4 Code Review - 代码审查工具
  • 一个INFJ的生存艺术手记
  • 汇编语言-王爽 实验12
  • 2025暑假ACM训练日记
  • Python编程:从入门到实践 16章 下载数据
  • 3D游戏引擎的“眼睛“:相机系统深度揭秘与手艺建立
  • IO刷题:常用排序算法(C语言)
  • 平邑一中NOIP提高集训Day 1
  • PostgreSQL认证哪家好?推荐有含金量的认证!
  • CentOS8停止服务,使用YUM源异常,解决方法
  • GPU数据不可跨线程使用
  • 将linux程序打成.run包 - Leonardo
  • 昆仑通态物联网连接问题排查指南
  • 资料 | 电机驱动器SLG7MD47679V SLG7MD47673V SLG7MD47671V SLG7MD47701V全桥/半桥(H桥)驱动器特性
  • P13535 [IOI 2025] 纪念品(souvenirs)
  • 网络直播:Windows日志记录、Sysmon与ELK堆栈技术解析
  • OpenCV入门(11):图像的几何变换(缩放、旋转、平移、翻转)
  • Unity使用Sqlite时对于null字段的异常处理
  • 2025 08 05
  • 非传统题与随机算法(续)
  • P3951 (同余) 小凯的疑惑
  • Spring Boot + Apache Tika 实现文档内容解析
  • hive中lateral view 侧视图将单行转成多行(切分字符串)
  • Web 组态,你确定只差 1 个前端图形库?