在 [0,1] 上随机撒 (n−1) 个点划分成 n 段,求第 k 大的段长的期望。
从 Appleblue17 老师的题解中学的,大概详细写很多一笔带过但是我不认为很简单的步骤。
Part 1
令随机变量 X 为第 k 大的段长。E(X)=∫10P(X=x)xdx=∫10P(X≥x)dx=1−∫10P(X<x)dx,现在来计算 P(X<x).
第 k 大 <x 当且仅当恰好有 t 个 ≥x 其中 t<k.
运用二项式反演,令 ft 表示恰好 t 个 ≥x 的概率,gt 表示钦定 t 个 ≥x 的概率,那么有:
gt=n∑i=t(it)ftft=n∑i=t(−1)i−t(it)gt
而 P(X<x) 就是 ∑k−1t=0ft.
Part 2
考虑计算 gt,首先乘上组合数 (nt) 选出钦定的段,使得“钦定的段”与“未钦定的段”之间没有顺序区分,这样就能将钦定段按顺序放到最前面。
通过用 (nt) 去除掉“钦定的段”与“未钦定的段”之间的顺序,我们来构建《[0,1] 随机放点,前 t 个段段长 ≥x》与《[0,1] 随机放点,所有点均落在 [tx,1] 中》这两个问题的双射。
前者映射到后者:将前 t 段每段劈成长为 x 和长为 len−x 的两部分,再把长为 len−x 的部分移动到这 t 个长为 x 段的右侧。这样就是最前面有 t 个长为 x 的段,然后剩下 (1−tx) 的长度分了 n 段。
后者映射到前者:将 [tx,1] 被劈开的 n 部分中的前 t 部分分配给前面那 t 个 x.
通过这个双射,得到 gt=(1−tx)n−1.
注:我不知道有没有更好的处理方式,我能想到的比较严谨的证明就是这个。
Part 3
组合上的手法到此结束了,现在就能列出答案进行推式子了。答案是:
1−∫10P(X<x)dx=1−∫10k−1∑t=0n∑i=t[ix≤1](−1)i−t(it)(ni)(1−ix)n−1dx
想通过交换求和号与积分号通过将积分的上界改写成 1i 来去掉 [ix≤1] 的限制,将 t=i=0 的那一项单独拿出来就能往下写了。
=1−∫10k−1∑t=0n∑i=t[i>0](−1)i−t(it)(ni)(1−ix)n−1−1=−k−1∑t=0n∑i=t[i>0](−1)i−t(it)(ni)∫10(1−ix)n−1dx=−1nk−1∑t=0n∑i=t[i>0](−1)i−t(it)(ni)1i
最后一步需要求 (1−ix)n−1 的不定积分:
∫(1−ix)n−1dx=∫(1−ix)n−1(−i)dx/(−i)=∫(1−ix)n−1d(1−ix)/(−i)=(1−ix)n−in
这个就是第一换元积分法,(1−ix)n−1=un−1 换元,利用 dudx=u′⇒u′dx=du,把 du 凑出来,这样就转化成了求 ∫un−1du.
Part 4
然后将 t=0 这一项单独拿出来看,先不去管 −1n:
n∑i=1(−1)i(ni)1i
两种解法。
第一种解法的思路大概是这个形式看上去就很想去吸收,但是不能直接用吸收恒等式,那么就沿用吸收恒等式的思路去想办法把 1i 凑到某个阶乘里面形成另一个组合数,从而想到去运用上指标求和:
=n∑i=1(−1)in−1∑j=0(ji−1)1i=n∑i=1(−1)in−1∑j=0(j+1i)1j+1=n−1∑j=01j+1j+1∑i=1(−1)i(j+1i)=−n∑j=11j
最后一步是将后面的求和号写成 (1−1)j+1−1.
第二种解法的思路是去凑二项式定理的形式,那就需要把 1i 这里的 i 放到指数上,把它写成一个定积分 1i=∫10ti−1dt
=n∑i=0(−1)i(ni)∫10ti−1dt=∫10dt1tn∑i=0(−1)i(ni)ti=∫10dt(1−t)nt=∫10dt(1−t)n1−(1−t)=∫10dtn−1∑i=0(1−t)i=n−1∑i=0∫10dt(1−t)i=−n∑i=11i
第三行到第四行是去凑等比数列求和,然后再对等比数列每一项积分。最后一步省略的就是前面说的第一类换元积分法(凑微分)。
所以 t=0 这部分对答案的贡献是 1n∑ni=11i.
Part 5
看 t>0 的那些:
=−1nk−1∑t=1n∑i=t(−1)i−t(it)(ni)1i=−1nk−1∑t=1n∑i=t(−1)i−t1t(i−1t−1)(ni)=−1nk−1∑t=11tn−t∑i=0(−1)i(i+t−1t−1)(ni+t)
发现 (−1)i(i+t−1t−1) 形式太好看了,它就是 [xi]1(1+x)t(广义二项式定理之后上指标反转),那就把两个组合数都去写成生成函数的某一项系数:
=−1nk−1∑t=11tn−t∑i=0([xi]1(1+x)t)([xn−i−t](1+x)n)
这正是个卷积的形式,那么:
=−1nk−1∑t=11t[xn−t](1+x)n−t=−1nk−1∑t=11t
加上 t=0 的 1n∑ni=11i,我们得到了最终的答案:
1nn∑i=k1i
End.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
2021-02-15 Luogu P7358 窗花