这篇博客教你如何使用公式,套路地解决一类期望题
受 tommymio 启发,总结了一下
前置知识:E[X+Y]=E[X]+E[Y],其中 X,Y 可以有依赖关系。
证明 OI Wiki 上有。
例题 CF280C Game on Tree
Statement. 给一棵有根树 (n≤105),根为 1,每次等概率选一个未删去的点,然后删除他的子树,问删除所有节点的期望次数。
约定
- P(X) 为事件 X 发生的概率
- E(X) 为 X 的期望值
- I(X)={1X 发生0X 没发生
给 I(X) 取个高大上的名字:称 I(X) 为事件 X 的指示器随机变量。(其实就是艾弗森括号)
显然,E(I(X))=P(X)。
分析
设 Xi=I(Ti),其中事件 Ti 为点 i 被选中
那么总共选出的点数 X=∑ni=1Xi
两边取期望得 E[X]=E[n∑i=1Xi]
由期望的线性性,E[X]=n∑i=1E[Xi]
这一步相当于破除了变量间的依赖关系
接下来,如果算出了单个 i 的 E[Xi] 是什么,问题也就迎刃而解:
E[Xi]=P(Ti),即 i 被选中的概率
i 要被选中,那 i 应该是 i 及它所有祖先中,第一个被选中的
考虑 i 及它的祖先,这些点的选中机会是平等的,所以 P(Ti)=1dep(i),定义 dep(1)=1
于是问题解决,Ans=n∑i=11dep(i)
总结规律
分三步:
- 设事件 T 的指示器随机变量。
- 利用指示器随机变量和期望的线性性质分化问题。
- 求解事件 T 发生的概率。
这个方法是核心,掌握这个方法就能举一反三,简单地解决许多的期望题!
再看几道例题。
例 1. UVA12004 Bubble Sort
Statement. 求 n(≤105) 个数的排列的期望逆序对数
分析
定义该排列为 p,Xi,j=I(Ti,j),其中事件 Ti,j 为 i<j∧pi>pj
那么该排列的逆序对数 X=∑n−1i=1∑nj=i+1Xi,j
两边同取期望,得
E[X]=E[n−1∑i=1n∑j=i+1Xi,j]
由期望的线性性,
E[X]=n−1∑i=1n∑j=i+1E[Xi,j]
问题变成求一个独立的 E[Xi,j]=P(Ti,j)
而
P(Ti,j)=∑ni=1(i−1)n(n−1)=n(n−1)2n(n−1)=12
故
E[X]=n−1∑i=1n∑j=i+112=n(n−1)4
解决!
例 2. 点菜问题
题意
n 个人,点 m 样菜,点菜时他们之间没有交流,每个人点每样菜是随机的,每个人只能点一样菜。
求被点过的菜的期望数,结果对 998244353 取模,n,m<998244353。
分析
定义 Xi 为第 i 样菜是否被选。换句话说就是 I(Ti),其中事件 Ti 为第 i 样菜被选中。
那么答案 X=∑mi=1Xi
同取期望,
E[X]=E[m∑i=1Xi]=m∑i=1E[Xi]
考虑单个 E[Xi] 咋算,也就是单独第 i 样菜被选的概率。
他等于总数减去第 i 样菜选 n 次还选不到的概率,即 1−(m−1m)n
故
E[X]=m⋅(1−(m−1m)n)
题外话
你可以在 U204177 提交此题。
例 3. P3802 小魔女帕琪
Statement. 给出一个序列,其中包含 ai(0≤ai≤109) 个 i(1≤i≤7),问将其随机排列后,期望出现多少次连续 7 个互不相同的数。
分析
定义 Xi 为区间 [i..i+6] 这 7 个数是否互不相同,N=∑7i=1ai。
那么答案 X=∑N−6i=1Xi
同取期望,
E[X]=E[N−6∑i=1Xi]=N−6∑i=1E[Xi]
问题变成如何求解单个 E[Xi],即随机取 7 个数,互不相同的概率。
他等于
∏7i=1ai(N7)
故
E[X]=(N−6)∏7i=1ai(N7)
写好看点,就是
7!⋅a1⋅a2⋅a3⋅a4⋅a5⋅a6⋅a7N⋅(N−1)⋅(N−2)⋅(N−3)⋅(N−4)⋅(N−5)
解决。
例 4. P1297 单选错位
Statement. 略
分析
默认约定 an+1=a1
令 Xi 为 ai,ai+1 的答案是否相同
X=n∑i=1Xi
同取期望得
E[X]=E[n∑i=1Xi]=n∑i=1E[Xi]
问题变成单个 E[Xi] 咋求。
通过简单小学奥数的计算后
E[Xi]=1max(ai,ai+1)
做完了!
例 5. 石子问题
题意
给定 n 堆石子,每堆石子有 ai 颗石子,每次等概率选择一颗石子,然后一次性取完它这堆的所有石子。请你求出第 1 堆石子期望第几次被取走。
n≤105,ai≥1
分析
该题的表示法不太一样:
设 ti 为第 i 堆石子被取走的时间,他一定是一个排列,Xi 为 [ti<t1]。
那么答案
X=n∑i=2Xi
同取期望
E[X]=E[n∑i=2Xi]=n∑i=2E[Xi]
而
E[Xi]=aia1+ai
于是这题就做完了。
例题就讲这么多。
总结
该方法能解决一大类期望问题,不过他还是有局限性的,就是如果答案不能方便的表示出来,他可能就做不了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步