概率期望
咕咕咕(?)
基础知识都在课件上不想手打了,好像都挺简单的
upd on 2022.2.15 更新了相关概率期望内容
upd on 2022.3.13 完善了概率期望相关内容,偏向入门
概率
~~(下文记A'为事件A的对立事件
样本空间:随机试验所有可能结果组成的集合
样本空间的任意一个子集称之为事件
事件发生:在一次试验中,事件的一个样本点发生
事件的运算律满足集合的运算律
概率:
• 定义:为样本空间的每一个事件定义一个实数,这个实数称为概
率。事件A的概率称为P(A)。
根据定义有如下性质:
- 0≤P(A)≤1
- 假设A1,A2,A3为互不相同的基本事件,有P(∑Ai)=1
- 对于若干个互斥的事件,有P(A1∪A2∪A3...)=P(A1)+P(A2)+P(A3)+...
- 如果A⊂B,P(B−A)=P(B)−P(A),更一般的,P(B−A)=P(B)−P(AB)
- P(A∪B)=P(A)+P(B)−P(AB)
- P(AB)=P(A)P(B)(A,B相互独立)
- P(A)=1−P(A′)
这些我们都可以通过定理3将一个事件划分成若干个不相交的事件然后求解
全概率公式:P(A)=∑P(A|Bi)P(Bi)
这会经常在一些递推中用到
古典概率
P(A)=n(A)n(Ω)
一般古典概率都可以通过一些排列组合的计数知识解决
条件概率
P(A|B)=P(AB)P(B)
- 对于若干个互斥的事件,有P(B1∪B2∪B3|A)=P(B1|A)+P(B2|A)+P(B3|A)+...
- P(B′|A)=1−P(B|A)
- P(B∪C|A)=P(B|A)+P(C|A)−P(BC|A)
概率的几个式子用到条件概率上也是成立的
P(A)=∑P(A|Bi)P(Bi)
例题:见zhx课件
概率杂项
二项分布:进行n从独立重复实验,成功k次的概率Pn(X=k)=Ckn pk(1−p)n−k,同时我们有E(X)=np , D(X)=np(1−p)
期望
对于一个离散型随机变量X,有P(X=xi)=pi
两点分布:X只有两种取值,P(X=0)=p,P(X=1)=1−p 有 E(X)=p,D(X)=p(1−p)
E(X)=∑iP(X=xi)xi,D(X)=∑ipi(xi−E(X))2=E(X2)−E(X)2
- E(aX+b)=aE(X)+b(必须保证概率不变
- E(X+Y)=E(X)+E(Y)(期望线形性
- E(XY)=E(X)E(Y)(X,Y独立
- D(X+Y)=D(X)+D(Y)(X,Y独立
- D(aX)=a2D(X)
全期望公式: E(Y)=∑iP(X=xi)E(Y|X=xi)
期望概率DP
对于等可能性问题可以转化为一个计数问题,否则可能需要期望线形性转化为别的问题或者是期望概率DP
期望概率DP一般要"倒着退",因为我们一般是可以通过下一个决策推出若干个状态,我们要想从这些状态转移到该点,就需要逆序定义状态,比如"一直选 选到n点",注意发现题目中的等价信息
osu
由于 0111011 = 0+1+3+5+0+1+3,即(x+1)2−x2=2x+1
考虑E(ANS)可以拆成E(2x1+1)+E(2x2+1)+....
x1,x2为点的期望结尾长度,于是我们计算每个点的期望结尾长度
分情况讨论即可
设 fi为考虑前 i 个字符的期望得分,li为以 i 为结尾的 comb 的期望长度,Si为第 i 个字符,那么有 3 种情况:
Si=o,fi=fi−1+li−1∗2+1,li=li−1+1。
Si=x,fi=fi−1,li=0。
Si=?,fi=fi−1+(li−1∗2+1)/2,li=(li−1+1)/2
由于当我们由全概率公式得到一种情况时,E((x+12))=E(x2)+2E(x)+1,所以直接累加到f里即可,由于?的时候有两种情况,相当于有两条不同边连向了i-1
DAG模型
有一个DAG,初始的时候在A号点,每次随机选择一条出边走下去,直到走不动位置。求期望经过的路径长度。
- 1.倒着递推即可
- 2.求出每条边的经过概率,算每条边对于答案的贡献,正着做
RedIsGood
桌面上有 R 张红牌和 B 张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到 1 美元,黑牌则付出 1 美元。可以随时停止翻牌,在最优策略下平均能得到多少钱?
R,B ≤ 5000
考虑期望DP,fi,j代表i张red,j张black,然后看每次选哪张牌就转换到了上个DAG模型了
fi,j代表还剩i张红牌,j张黑牌直到取完的期望,转移枚举再翻哪一张牌 fi,j=ii+j(fi−1,j+1)+ji+j(fi,j−1−1)
游走模型
一个人初始在点A,一共有两条路,每次随机选择一条
有P的概率花一天时间走到B
有1-P的概率花一天走回A。
求这个人期望需要几天走到B?
相比之下我更喜欢第2种
回归题目,直接
x=P+(1−P)(1+x) 解得 x=1P
类似题目还有checkpoints 线性生物
大力推荐Rainair的博客 https://blog.aor.sd.cn/archives/725/
游走
先期望线性分解成每条边的期望次数,即我们只要求出了每个点期望经过次数就行了(fu−v=fudu+fvdv)
可列方程fu=∑vfvdv+[u=1]
换教室
拆成每条边的期望值,DP即可
分手是祝愿
相逢是问候
相当于异或
首先对于一个序列,我们一定是贪心的从大到小按,直到按到了一个和原序列相同的数,即我们按那些位置都是确定的,如果我们有一个位置按错,就要再按一次该位置还原,于是fi为从i个要按位置按到了i-1的期望次数
fi=in+n−in(1+fi+1+fi)
ans=∑i=k+1fi
皮克敏
https://noip.ac/rs/show_problem/3687
只要我们把状态定义好了,只需要考虑这种特殊情况即可,其他相同情况根本不用考虑,即锁定下来了,接着考虑每一步能退到哪些状态,来实现我们的DAG模型
数树
https://noip.ac/rs/show_problem/3675
类似osu一样推式子
覆盖
http://zhengruioi.com/contest/698/problem/1549
CF280C Game on Tree
亚瑟王
由于每个数只能出现一次,所以这启发我们根据序列来dp,相当于我们将每个点的概率都算上了,这样的话只考虑下一点单独的概率即可
具体的,先拆成每个点存在于r轮的概率,然后计算
发现,位置1的概率为1−(1−P)r,(注意全集大小)
这是因为每次选都会先经过一号点
这启发我们fi,j为前i个位置,已经选了j张牌的概率,转移为
fi,j=fi−1,j×(1−P)r−j+fi−1,j−1×(1−P)r−j+1
则每个点的概率为∑jfi−1,j×(1−(1−P)r−j)
练习题:
CF865C Gotta Go Fast
CF1540B Tree Array
Warning:下面知识点会用到导数和微积分的知识
再谈生成函数
移位一定要补特殊项,拆
形式幂级数
形如
F(x)=∑n≥0anxn
不收敛,但可以求出她的封闭形式
逆元
如果A(x)是形式幂级数,a0可逆,则存在一个B(x)使得A(x)B(x)=1则B(x)为逆元
∑ni=0aibn−i=(b0=1a0bn=−1a0∑n−1i=0aibn−i)
导数与积分
如果A(x)是OGF,则
A′(x)=ddxA(x)=∑n≥1nanxn−1=∑n≥0(n+1)an+1xn
∫A(x)dx=∑n≥01n+1anxn+1=∑n>0fn−1nxn+C
广义二项式定理
(1+x)a=∑n≥0(a,n)xn[a:R]
广义二项式系数
(n,m)=n(n−1)...(n−m+1)m!
对于一个数列{fn}
OGF:F(x)=∑n≥0fnxn
EGF:F(x)=∑n≥0fnxnn!
常见生成函数及运算
OGF:
满足数乘,卷积,加法
(∑n≥0fnxn)×(∑n≥0gnxn)=∑n≥0(∑ni=0fign−i)xn
EGF:
满足数乘,卷积,加法
(∑n≥0fnxnn!)×(∑n≥0gnxnn!)=∑n≥0(∑ni=0(n,i)fign−i)xnn!
其实一些简单的完全可以现退,这里就放出一些基本不会推出来的
∑n≥0xn=11−x
∑n≥mxn=xm1−x
∑n≥0anxn=11−ax
∑n≥0(n+k−1,n)xn=1(1−x)k
∑n≥0cnxnn!=ecx
斐波那契
F(x)=x1−x−x2,再因式分解一下
卡特兰数
用最朴素的递推公式,发现是个卷积的形式,展开带入得
F(x)=1+xF2(x),解得
F(x)=1−√1−4x2x
再用广义二项式定理展开回带即可得出
fn=(2n,n)n+1
指数型生成函数
牵扯到好多微积分的知识,学不明白了/ll
一些常见的EGF:(直接泰勒展开!)
∑n≥0xnn!=ex [ 1,1,1... ]
∑n≥0(−1)n xnn!=e−x [ 1,−1,1... ]
∑n≥0cnxnn!=ecx [ 1,c,c2,c3... ]
∑n≥1(n−1)!xnn!=ln 11−x [ 0!,1!,2!,... ]
移位
求导左移,积分右移
所有常见生成函数
有点乱,见
https://rqy.moe/Algorithms/generating-function/
贝尔数--exp
不容易啊不容易啊
将n个有区别的小球放进任意多个无区别的箱子的方案数,即将一个大小为n的集合划分成若干个不相交非空子集的并的方案数,有递推式(当然你可以斯特灵数)
wn+1=∑ni=0(n,i)wn−i+[n=0]
相当于{1}和{wn}的二项卷积
W(x)=∫W(x)ex+1
求导得
W(x)′W(x)=ex
积分得
ln W(x)=ex+C
于是
W(x)=eex−1=exp(ex−1)
这可以扩展到一类图计数问题
多项式
拉格朗日插值
如果有一个不超过n次的多项式f,则通过n+1个不同的点(xi,yi),其中f(xi)=yi,则我们就可以确定这个唯一的多项式,这n+1个点称为多项式f的点值表示
给定n+1个点(xi,yi),于是我们有
f(x)=∑ni=0yili(x)
li(x)=Π0≤j≤n,j≠ix−xjxi−xj
单位根
满足xn−1=0的x被称作n次单位根
欧拉公式:z=(x+yi)=reiθ=r(cosθ+isinθ)
离散傅里叶变换(DFT)
设 f 是长度为 n 的数列,对 0 ≤ k < n,令
F(k)=∑n−1i=0fiwikn
显然,F(k)=f(wkn),其实与点值表示是等价的
循环卷积
对于两个数列f和g,定义
hk=∑(i+j)mod n=kfigj
h为f和g的循环卷积
由于
wnn=1
wi+j mod nn=wi+jn
所以F(f∗g)=F(f)F(g)
于是几乎和FFT一样做,但是需要把>=n的部分折回来
复数单位根
xn=1
wkn=cos2πkn+sin2πkni
wdkdn=wkn
wk+nn=wkn
wk+n2n=−wkn
(wkn)d=wkdn
w0n=wnn=1
FFT
算两个多项式的乘积,通过ianzhi
对于一个多项式A(x)=∑n−1i=0aixi,假设n=2k
我们可以得出递归式子
点值表示法:我们可以将0-n-1的win为根带进去
共有3步
1.将多项式化为DFT
2.F(f∗g)=F(f)∗F(g) (x1,F(x1)G(x1))
3.将DFT变回一个多项式
A0(x)=a0+a2x+a4x2+....an−2xn2−1
A1(x)=a1+a3x+a5x2+....an−1xn2−1
A(x)=A0(x2)+xA1(x2)
A(wkn)=A0(wkn2)+wknA1(wkn2)
但是复杂度是个n^2的...
A(wk+n2n)=A0(wkn2)−wknA1(wkn2)
n个n次多项式->n个n/2次多项式->n个n/4次的多项式->...->n个1次多项式
复杂度O(nlogn)
但是操作3怎办?
IDFT
我们已知(w0n,f(w0n))....若干个多项式乘积后的DFT,考虑重新定义多项式
Y(x)=∑ni=0f(win)xi
拆开整理一下
在定义Y的点值(w−kn,ck)
整理得ck=akn
于是求一下ck的值就行了
NTT
求出一个原根,发现单位根的性质都满足,于是随便做了
998244353=119*2^23+1 原根为3
FWT
巨坑,待填,暂且放着
多项式求逆
求 A(x)B(x)≡1 (mod xn)
n=1时就是个逆元
于是我们可以递归求解,n->n/2上取整
得到
B(x)≡2C(x)−A(x)C(x)2 (mod xn)
用ntt加速即可
多项式开根
求 B(x)2≡A(x) (mod xn)
B(x)≡C(x)2+A(x)2C(x) (mod xn)
多项式除法
注意:这不是在取模意义下!
给定 A(x) B(x) 要求求出一对 C(x) D(x)
使得 A(x)=B(x)C(x)+D(x) 且最高次项分别为n m n-m <m
考虑定义一个新的函数rev(F(x))=xnF(1x)
则
rev(A(x))≡rev(B(x))rev(C(x)) (mod xn−m+1)
然后多项式求逆就完了
多项式取对数
求 g(x)≡ln f(x) (mod xn)
求导,求逆,积分,得( g′(x)≡f′(x)f(x)(mod xn) )'
因为
ddx ln A(x)=A′(x)A(x)
所以
ln A(x)=∫A′(x)A(x)dx
多项式求逆即可
多项式exp
求g(x)≡ef(x) (mod xn)
取log得
ln g(x)≡f(x) (mod xn)
定义多项式函数h(g(x))=ln g(x)−f(x)
即求这个函数的零点,求导得
h′(g(x))=1g(x)
现在考虑我们求得
h(g0(x))≡0 (mod xn) => h(g1(x))≡0 (mod x2n)
有
g1(x)−g0(x)≡0 (mod xn)
h(g1(x))≡h(g0(x))+h′(g0(x))(g1(x)−g0(x))≡0 (mod x2n)
即
g1(x)≡g0(x)+g0(x)(f(x)−ln g0(x)) (mod x2n)
泰勒展开
对于任意一个函数 f(x) 她的泰勒展开为
f(x)=f(x0)0!+f(1)(x0)1!(x−x0)+f(2)(x0)2!(x−x0)2+..........
多项式快速幂
求 f(x)k mod xn
当然可以倍增做
可以写成 f(x)k=ek lnf(x)
(ab=eb ln a)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】