Updata 7.10 文章重构。
参考了网上许多 blog
什么是期望
我们小学学过概率和平均数。
把事件 A 发生的概率表示为 P(A)。
把随机变量 X 的取值期望值记作 E(X)=∑iP(X=i)×i
简单点就是成立概率乘上成立贡献。
简单的性质
对于两个互不影响的事件(变量) X,Y:
- P(X∧Y)=P(x)×P(y)
- E(XY)=E(X)E(Y)
证明:
E(XY)=∑i∑ji×j×P(X=i)×P(Y=j)
=∑ii×P(X=i)∑jj×P(Y=j)
=E(X)E(Y)
- P(X∨Y)=P(x)+P(y)
- E(X+Y)=E(X)+E(Y)
证明:
E(X+Y)=∑i∑jP(X=i)×P(Y=j)×(i+j)
=∑ii∑jP(X=i)×P(Y=j)+∑i∑jj×P(X=i)×P(Y=j)
∵∑iP(X=i)=1
∴E(X+Y)=∑iP(X=i)+∑jj×P(Y=j)=E(X)+E(Y)
这是期望的线性性,非常重要。
一些经典例子
A.
证明:概率为 p 的事件期望在 1p 次发生。
运用了极限的思想。
设 f(0) 表示事件没发生,期望 f(0) 次发生,f(1)=0。表示事件已经发生。
我们可以得到:f(0)=pf(1)+(1−p)f(0)+1
根据极限思想合并左右两个 f(0),移项化简,得到 f(0)=1p。
B.
有 n 个随机数 Xi,Xi 等概率的从 [1,m] 中选取,求 maxni=1Xi 的期望值。
运用了经典的转化思想。
先转化问题:maxni=1=S,则 E(S)=m∑i=1P(S=i)i
我们发现 P(S=i) 很难求,转化为 P(S≤i) 比较好求。
直接强制 n 个数都在 [1,i] 之间即可。所以 P(S≤i)=(im)n。
所以 P(S=i)=P(S≤i)−P(S≤i−1),对于程序,使用快速幂即可在 O(mlogn) 时间内解决。
很强的题目。
题目要求某个容器的存活时间 E(ti),容易得到柿子:E(ti)=∑x=1P(ti=x)×x
运用上面的技巧,转化为:
E(ti)=∑x=1P(ti≥x)
找到第 i 个数左右第一个比它大的数 l,r,对于一般的罐子存活时间上界就是 n−3。然后容易想到的就是枚举 x,我们现在的问题就变成了有多少种情况操作次数比 x 大。不妨思考为操作 x 次还没有做掉的概率。
不难发现如果选择一个操作一个数位置 p 就是操作 [p,p+1],对于所有位置进行标号,发现所有标号的情况和原序列删除情况成了双射。
考虑枚举取的点数 x,选择一些位置最后乘上一个 x! 变成一个更简单的选择问题。现在问题转化为:
- (1) 在一个序列选取 x 个点。
- (2) 不能同时取 i 号点左边的 l 个。
- (3) 不能取右边(包含自身)的 r 个。
很简单就能想到容斥,因为不满足 (2)(3) 的情况实在是太好求了。我们推出柿子:
n∑x=1x!(Cxn−1−Cx−ln−1−l−Cx−rn−1−r+Cx−l−rn−1−l−r)
这个就是合法的方案数。总方案数就是第一项,概率就是:
n∑x=1x!(Cxn−1−Cx−ln−1−l−Cx−rn−1−r+Cx−l−rn−1−l−r)x!Cxn−1
然后约分,问题等价于:
n∑x=1(Cxn−1−Cx−ln−1−l−Cx−rn−1−r+Cx−l−rn−1−l−r)Cxn−1
然后我们就能 O(n2) 做掉这题了。
然后可以暴拆柿子做到 O(n),但是没有必要
题目要求 E(∑d),根据期望的线性性,考虑每个数的贡献,最后再加起来,也就是 n∑i=1dpi×di
现在在于问题怎么求 dpi,也就是所有情况这个数贡献的和。
将问题进行等价的转化,设置随机变量:有一个 n×r 的 01 矩阵,每个矩阵里的数都有概率为 0 或 1,每次会取每一行第一个出现的 1,取过的列不会再取,问每一列被取的概率之和。
数据范围提示解法应该是 O(nr) 的,考虑到取多次都是相同的,容易想到枚举取到的一行,需要满足之前没有被取然后这一行被取,每一次考虑的都是一个左上方的矩阵,没有后效性,考虑 dp。
考虑刷表,每次增加一列似乎更为容易。
首先,对于第一个数,被取的概率显然是 1−(1−p1)r,考虑定义 fi,j 表示前 i 个数,取了 j 个的方案数。
-
(1) 不选这个数
那么,就是 fi,j←fi−1,j×(1−pi)r−j
-
(2) 选这个数
不难发现,只要在任意一处取了都是等价的结果,就是:fi,j←fi−1,j−1×(1−(1−pi)r−j+1)
初始情况就是 f0,0=1。
考虑计算最终的答案,dpi,不难在转移的过程中顺便得出。
难点在于转化。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?