@
基础概念
- 随机变量:有多种可能的取值的变量
万物都可以当做随机变量,包括常数,方便用 (sum) 统计 - P(A):事件 A 发⽣的概率
- E(X):随机变量 X 的期望值,(E(X)=Sum[ P(X=i)*i ])
- 独⽴事件:互相不影响的事件
期望不相关可积性
(E(xy)=E(x)*E(y)) ,(x)和(y)互相独立
常用技巧
- 对于离散变量 X,(P_{(X=K)}=P_{(Xle K)}-P_{(Xleq K-1)})
期望线性性
(E(x+y)=E(x)+E(y)) 任意(x,y)
j同理
得到
最大值不超过Y的期望
在1~s的数中随机:
概率为P时期望成功次数
答案:期望为(frac{1}{p})次后发生
设X为次数
即证明(E(x)=frac{1}{p})
解一、$$P(x=i)=(1-p)^{i-1}p$$
解二、$$P(x>=i)-P(x>=(i+1))=(1-p)^{i-1}p$$
只用管前几次都失败了
对于每个((1-p)^i),只有两个,一个系数i,一个系数i+1
即原式等于
此时运用前面等比数列到+inf的公式
基础问题
拿球
箱子里有(n)个球(1...n),你要从中拿(m)次球,求取出的数字之和的期望
定义
也即
其中
放回与不放回都一样感,性理解:每个球没有区别,抽到的概率一样
随机游走
做期望题先找等价点,设置若干问题,再找不同点间E关系(只推下一步)解方程
或者设置一种,把所有情况推完
-
链上游走,从一端到另一端的期望步数
[E(y)=sum _{i=1}^{n-1}X_i$$ Xi为随机游走i第一次走到i+1步数 $$E(y)=sum _{i=1}^{n-1}E(X_i)][E(x_2)=1/2+1/2*(1+E(X_1)+E(X_2)) ][E(x_i)=1/2+1/2*(1+E(X_{i-1})+E(X_i))=E(X_{i-1})+2 ][E(y)=sum _{i=1}^{n-1}E(X_i)=1+3+5+7+9+...=(n-1)^2 ] -
完全图上游走,一个点到另一点的期望步数
(1/n-1)概率成功(每次都能走到其他每个点)
跟抛硬币差不多,即每次(1/n-1)抛到正面,期望步数即为(n-1) -
2n点 完全二分图上游走,一个点到另一点的期望步数
A:到同侧点步数
B:异侧点步数[B=frac{1}{n}+frac{n-1}{n}*(B+2) ][A=(1+B) ]然后解一下方程?
-
n点菊花图游走,根到x的期望步数
[E=frac{1}{(n-1)}+frac{(n-2)}{(n-1)}*(2+E) ][frac{E}{(n-1)}=frac{(2n-1)}{(n-1)} ][E=(2n-1) ] -
(n)点树上游走,(x)到(y)求期望步数
以(y)为根
(f(x))从(x)第一次到x父亲的期望
(d[x])为(x)度数[f(x)=1/d[x]+1/d[x]*sum_{i-1}^{d[x],i!=fa[x]}(1+f(son[x])+f(x)) ]然后瞎JB搞DP
-
构造200个点无向图,使得S到T期望 (ge1000000=100^3)
E1要是(O(n^2)),搞100点的链从S到T,然后S端点搞100点完全图即为(100^3)
经典问题
-
每次随机⼀个 [1,n] 的整数,问期望⼏次能凑⻬所有数
[sum_i n/i ]每次设已经抽出(i-1)个,要抽出没抽过的,成功概率((n-i+1)/n),期望次数为(n/(n-i+1))
然后反过来枚举就行(式子比较简单) -
随机⼀个⻓度为 (n) 的排列(p),求 (p[1…i]) 中 (p[i]) 是最⼤的数的概率
首先,(i)后面的数不影响答案
然后只要i取到长度为i的排列的最大的数就可以,前面怎么样都会比他小
显然(1/i) -
问满⾜上⾯那个题的 i 的个数的平⽅的期望
[sum_{i!=j}1/ij+sum_i 1/i ]设(X_i)为i为是否满足条件的期望
显然X_i只有两种取值,0和1
就有$$x=sum_i^nX_i$$[E(x^2)=E((sum _i^nX_i)^2) ][=E(sum_i^nsum_j^{n,i!=j}X_i*X_j+sum_i^nX_i^2=X_i) ]拆E,
[=sum_i^nsum_j^{n,i!=j}E(X_i*X_j)+sum_i^nE(X_i) ]第一项,(i)不影响(j),直接套用3的概率乘一下
第二项更简单,直接求和 -
随机⼀个⻓度为 n 的排列 p,求 i 在 j 的后⾯的概率
[frac{1}{2} ] -
随机⼀个⻓度为 n 的排列 p,求它包含 w[1…m] 作为⼦序列/连续⼦序列的概率
第一问,[frac{(n-m)!}{n!}*C(n,m) = frac{1}{m!} ]第二问:
取m个位置,第一个位置(n)种,第二个位置(n-1)种,乘到(n-m+1)种在这m个位置中选正确(w_i)的概率即为$$prod_{i=n-m+1}^n frac{1}{i}= frac{(n-m)!}{n!}$$
然后枚举开头位置,显然(n-m+1)个位置[frac{(n-m+1)!}{n!} ] -
有 n 堆⽯头,第 i 堆个数为 a[i],每次随机选⼀个⽯头然后把那⼀整堆都扔了,求第 1 堆⽯头期望第⼏次被扔
[1+sum_{i=2}^nP(A[i]<A[1]) ](P(A[i]<A[1])=a[i]/(a[i]+a[1]))
-
随机⼀个⻓度为 n 的01串,每个位置是 1 的概率是 p ,定义 X 是每段连续的 1 的⻓度的平⽅之和,求E[X]
定义(X_i,Y_i)
(0->Y_{i+1}=0,X_{i+1}=X_i)
(1->Y_{i+1}=Y_{i}+1,X_{i+1}=X_i-Y_i^2+(Y_i+1)^2=X_i+2Y_i+1)
要求的是(E(X_n))
类似的,[E(X_n)=p*(E(X_{n-1})+2*E(Y_{n-1}+1))+(1-p)*E(X_{n-1}) ][E(Y_n)=p*(1+E(Y_{n-1}))+(1-p)*0 ] -
给⼀个序列,每次随机删除⼀个元素,问 i 和 j 在过程中相邻的概率、
即为(i~j) 中间的数排列,(i,j)在最后的方案数除以总数
[(j-i-1)!*2/(j-i+1)! ][=2/(j-i)*(j-i+1) ] -
给定⼀棵树,将他的边随机⼀个顺序后依次插⼊,求 u,v 期望什么时候连通
假设路径长度为k,求路径上的边出现的最后一条的期望时间
假设在第i次加边时联通[sum _k^{n-1} i*frac{k!*C_{i-1}^{k-1}*(n-k-1)!}{(n-1)!} ]也可以倒着来求概率期望
-
给 1…n 这 n 个数,每次随机选择⼀个还在的数并且删掉他的所有约数,求期望⼏次删完
题意:
- 随机删x,如果x没有被标记,把x的约数全部标记
- 求期望选到几个没被标记的x
- 注意标记与删不同,答案一样,方便求概率
定义(E(x))为是否在没被标记前被删掉的期望
被删掉的概率为(P(x),E(x)=frac{1}{P(x)})
则(P(x)=frac{1}{floor(n/x)})(x的倍数要在他之后删)
然后就套路线性拆开相加就可以了
期望线性性练习题
-
给定 n 个硬币,第 i 个硬币的价值为 w[i],每次随机取⾛⼀个硬币,获得的收益是左右两个硬币的价值的乘积,求期望总价值
[E(s)=sum_{(i<j)}^n frac{2}{(j-i+1)(j-i)} ] -
有 N 个数 a[1…N],每次等概率选出两个数,然后合并成⼀个新的数放回来,得到的收益是新的数的值,求总收益的期望
[E(s)=sum_i^n E(x_i)*a_i ](x_i:a_i)对答案的贡献次数
[E(x_i)=sum _{j=1}^{n-1} frac{2}{n-j+1} ]即处理每次合并两个团时是否选到i所在的团
即在(n-j+1)个团中选两个团,蒟蒻我只能(n^2)处理 -
给定⼀个数列 W[1…N],随机⼀个排列 H,如果 H[i] ⽐ H[i-1] 和 H[i+1] 都⼤,就获得 W[i] 的收益,求期望收益
定义单次期望(x_i)[E(s)=sum_i^n x_i ][E(x_i)=w_i*P(h_i>max(h_{i-1},h_{i+1})) ]某老师:显然P是三分之一啊。。。(?
感性理解:每个都平等,至少有一个最大值
-
给出⼀棵树,⼀开始每个点都是⽩的,每次选⼀个⽩点将他⼦树⾥所有点染⿊,求期望⼏次染⿊整个树
(sum 1/dep[i]) 他祖先的点要在之前删
-
有 N 个⿊球,M个⽩球,每次等概率取出⼀个球(不放回),将取出来的球的颜⾊写成⼀个01序列,求 ”01” 的期望出现次数
期望次数即为这个球和上一个球不同的次数
在2~n+m这n+m-1个数中,考虑第i个数为1,概率为(frac{n}{n+m-1})
然后考虑第i-1个为0,概率为(frac{m}{n+m})
乘起来得到(m*n/(m+n))
(我有点不会,待填坑
例题选讲
三维凸包点数期望啥的我就不写了,我也不会
noip2016换教室
设(X_i) 第i节课~第i+1节课的距离
老套路,
设$$E_s= sum_{i=1}^{n-1}E(X_i)$$
0为不申请,1为申请
每种情况,令
0 0 $$d_1=dis[c_i][c_{i+1}]$$
1 0 $$d_2=(1-k_i)dis[ci][c_{i+1}]+k_idis[d_i][c_{i+1}]$$
0 1 $$d_3=(1-k_{i+1}) dis[c_i][c_{i+1}] +k_{i+1}dis[c_i][d_{i+1}]$$
1 1 $$d_4=(1-k_i)(1-k_{i+1}) dis[c_i][c_{i+1}]+(1-k_i)k_{i+1}dis[c_i][d_{i+1}]+(1-k_{i+1})k_idis[d_i][c_{i+1}]ki+k_i*k_{i+1}dis[d_i][d_{i+1}]$$
设计状态 (f[i][j][0/1])为第i个教室,换了j次的期望长度,n*m 搞dp
这次换:(f[i][j][1]=max(f[i-1][j-1][0]+d2,f[i-1][j-1][1]+d4))
这次不换:(f[i][j][0]=max(f[i-1][j][0]+d1,f[i-1][j][1]+d3))
d1d2d3d4每次算,floyed预处理dis
区间交
(区间交定义:(l_2<=r_1))
考虑枚举 (l2) 算 (r1<l2)
令 (g_r) 为右端点 (=r) 的概率
其中,$$P(l,r)= frac{1}{n}*frac{1}{n-l+1}$$
令 (f) 为 (g) 前缀和,枚举 (l_2) ,则有
于是再对 (f) 求和就可以了
0-1边树求直径期望
n<=200,设直径为s
(f[x][i])表示x点,直径(<j)概率
转移用树形(On^2) dp
即对于当前子树,枚举所有儿子递归处理
处理得到每个儿子的f后两层枚举儿子的组合,再枚举深度,求出深度之和以及对应的概率
老师说这四O(n^2)的,可能我没理解到⑧
球染色
江下题意,
有(n)个球,⼀开始颜⾊是(c[1…n]),每次随机⼀对数((i,j)) 然
后(c[j]=c[i]),求让(c)全部相同的期望步数
(x->x) (p_0)
(notx->x) (p_0)
(x->not x) (p_{-1})
(not x ->x) (p_1)
即 每种概率对应情况:
(p_0) :不影响
(p_1): 多一个
(p_{-1})少一个
考虑(f(x))为已经有(x)个匹配,要变成(便乘(n)个的期望步数
显然,(f(n)=0;)
对于(a!=n),有$$f(a)=p_0(1+f(a))+p_{-1} (1+f(a-1))+p_1(1+f(a+1))$$
然后移项使得可以把(i-2,i-1)转移到 (i) (O(log_n)) 矩阵快速幂
至于我为什么不写转移矩阵呢?懒
(其实我做矩阵题都要先列整齐的式子然后再回顾一下举矩阵乘法是横着的还是竖着的然后再举几个例子才能推出来
区间翻转
给定⼀个⻓度为 n 的 01 串,每次随机⼀个区间将⾥⾯所有
元素翻转,求 m 次操作后 1 的期望个数
令
其中(x_i)为最后位置1或0
套路地运用线性性质,(下次我就不写这个了,真jr难敲)
设(P)为随机区间包含某数概率,见上面另一个区间题,最上面有目录
定义状态 (f[i][1/0]) 为第第i次操作1/0的期望个数
边界就是输入
(f[i][v]+=f[i-1][v xor 1]*P)
(f[i][v]+=f[i-1][v]*(1-P))
有点口胡,但是看上去挺正确的哈
二位&三维凸包点数期望
给 n 个点,随机选⼀个点集,求⼆维/三维凸包的期望点数
好像听说可以枚举边然后判断半平面/线段是否只有一边有点?
不会,坏时代,来临力!(悲)
单选错位
有 (n) 道题,第 (i) 题有 (a[i]) 个选项,标号是(1…a[i]),现在你认
真做完且完全做对了这 (n) 题,但是抄答题卡时错位了,将
第 (i) 题的答案抄到了第(i%n+1)题上,现在你想知道,在题⽬正确答案选项随机的情况下,你期
望能对⼏道
(n,a[i]leq10^7)
如上,(E(s)= sum E(x_i))
(X_i)为交换后第i题对不对,为(0/1)
显然,(A_i)中的取值与(A_{i+1})中的取值无瓜,可以乘起来
于是考虑 (i) 对答案的贡献,交换后答案有(min(A_i,A_j))种答案,(j) 取(i pmod n+1)
然后求(sum E(i))就可以了
KILL
⼀个游戏有 n 个⼈,规则是这样的:
- 随机选择⼀个还没死的⼈,让他活着离开
- 活着离开之前,他会向剩下所有⼈开⼀枪,有 p 的概率暴毙
重复以上步骤直到所有⼈要么死了要么离开了
求⼀个⼈活着离开且⼀共被开了 k 枪的概率,(n<=2000)
定义状态:(f[i][j]) 为现在剩下(i)个人,前面有(j)个人(即开了 (j) 枪)
则有:
1.(i) 当场被前面的延迟子弹暴毙,(j) 不增加
2.(i) 是欧皇,遂开枪杀人
初始:(f[n][0]=1),dp (i) 从大到小,(j) 从小到大枚举
输出答案对(f[i][k])取max即可
10/16更新
停课集训,做了些其他题,有些需要写的写一下
CF540D
设(f[i][j][k])为剩下这些人的概率
初始状态显然
对于当前状态,枚举哪两种人相遇,转移
注意同族人相遇的情况要减掉
后记
敲了挺久的吧。。
但是敲一遍确实加深理解了,就是没时间实现代码(思考两小时,代码5分钟
还是江一下套路吧
先定义目标状态期望(E(s))
然后用线性性拆成若干个(sum E(x_{0,1,2,...}))并分类
对于每一类找关系,同类求递推式或者直接算的式子,有时候解一下方程
次数多的时候用相乘和线性关系分析化简一下就可以了
最后希望大家康的开心QwQ
敲的这么辛苦,不点个赞or水条评论or关注一下马?