微积分,多项式,概率期望。

GYM102155B Short Random Problem

题意

给你一颗 n  (n≤80)n\;(n\le 80) 个点的树,树上的每一条边的长度都是 [1,n][1,n] 的随机实数。 求直径的期望长度,对 109+710^9+7 取模。

题解

总的思路:枚举一条边 (u,v)(u,v) 计算直径中心在其上的贡献,即 直径中心在该边上的概率 乘 直径长度期望。

设 fu(x)=Pr[d(u)≤x]f_u(x)=Pr[d(u)\le x],即表示 uu 到子树中最长链长度小于 xx 的概率,这是可以用多项式表示的,而且是一个连续的分段函数,以整数为分段界限。

  • 考虑加上一条边:f(x)=∫x−1xg(y) dy\displaystyle f(x)=\int_{x-1}^x g(y)\,\mathrm{d}y 。

  • 考虑多条链中取最大:f(x)=∏fi(x)f(x)=\prod f_i(x)。

    因为 Pr[max⁡(a,b)≤x]=Pr[a≤x]×Pr[b≤x]Pr[\max(a,b)\le x]=Pr[a\le x]\times Pr[b\le x]

考虑 DP 出 fu(x)f_u(x),对于叶子节点显然 f(x)=1f(x)=1。对于任意节点先取最长链再加一条边,形式化地:

gu(x)=∏v∈son(u)fv(x)g_u(x)=\prod_{v\in son(u)} f_v(x)

fu(x)=∫x−1xgu(y) dyf_u(x)=\int_{x-1}^x g_u(y)\,\mathrm{d}y

具体实现:

考虑到 gu(x)g_u(x) 是分段函数,设 hi(x)h_i(x) 是 gu(x)g_u(x) 第 ii 个函数的积分函数,包含区间 (i−1,i](i-1,i]。对于一个 x∈Rx \in R,设 y=⌊x⌋y = \left \lfloor x\right \rfloor,则

fu(x)=hy(x)−hy(y)+hy−1(y−1)−hy−1(x−1)f_u(x) = h_y(x) - h_y(y)+h_{y-1}(y-1)-h_{y-1}(x-1)

对于每个属于不同区间的 fu(x)f_u(x) 分开来计算,然后特判最后一个新加的区间即可,知道了 fu(x)f_u(x) 的计算过程, f(x)f(x) 是分段函数 也就不证自明了。


考虑通过 f(x)f(x) 求我们要的期望。事先约定,考虑边 (u,v)(u,v) 时,以下 fu(x)f_u(x) 都以 vv 为根,同理 fv(x)f_v(x) 都以 uu 为根。

若 u,vu,v 之一为叶子节点,不妨设 vv 为叶子节点。设 (u,v)(u,v) 边权为 ll,uu 到子树最长链长度为 d(u)d(u),若要直径中心在 (u,v)(u,v) 上需要 d(u)≤ld(u)\le l,即 fu(l)f_u(l) ,直径长度的期望即 E[d(u)+l]\mathbb{E}[d(u)+l] ,根据期望线性性可以分别求。

E[l]=∫01lfu(l) dl(1)\mathbb{E}[l]=\int_{0}^{1} lf_u(l)\,\mathrm{d}l \tag{1}

相当于枚举 ll,并对应满足 d(u)≤ld(u)\le l 。

E[d(u)]=∫01(∫0lxfu′(x) dx) dl(2)\mathbb{E}[d(u)]=\int_{0}^{1}\left(\int_{0}^{l} xf'_u(x)\,\mathrm{d}x \right)\,\mathrm{d}l \tag{2}

看括号里面,fu′(x)f'_u(x) 即 Pr[d(u)=x]Pr[d(u)=x] ,表最长链长度为 xx 的概率,再 ×x\times x 即期望,则 ∫0lxfu′(x) dx\int_{0}^{l} xf'_u(x)\,\mathrm{d}x 表示 d(u)d(u) 小于等于具体枚举的 ll 时 d(u)d(u) 的期望。 外边一层积分枚举 ll。

证明 fu′(x)=Pr[d(u)=x]f_u'(x)=Pr[d(u)=x]:

先考虑另一个问题,让你求 d(u)=xd(u)=x 且 x∈[l,r]x\in[l,r] 的平均概率,显然是 fu(r)−fu(l)r−l\dfrac{f_u(r)-f_u(l)}{r-l} ,此时考虑 rr 无限逼近 ll,即

lim⁡r→lfu(r)−fu(l)r−l=lim⁡Δx→0fu(l+Δx)−fu(l)Δx=fu′(l)\lim_{r\to l} \frac{f_u(r)-f_u(l)}{r-l}=\lim_{\Delta x\to 0} \frac{f_u(l+\Delta x)-f_u(l)}{\Delta x}=f'_u(l)

证毕。

若是一般情况,不妨令 d(u)≤d(v)d(u)\le d(v),显然需要满足 d(u)≤d(v)≤d(u)+ld(u)\le d(v)\le d(u)+l,同样 E[d(u)+d(v)+l]\mathbb{E}[d(u)+d(v)+l] 可以根据期望线性性:

E[l]=∫01l(∫0M(u)fu′(x)(fv(x+l)−fv(x)) dx) dl(3)\mathbb{E}[l]=\int_{0}^{1} l\left( \int_{0}^{M(u)}f'_u(x)\big(f_v(x+l)-f_v(x)\big)\,\mathrm{d}x \right)\,\mathrm{d}l \tag{3}

枚举 ll (M(u)M(u) 表 d(u)d(u) 能取到的最大值),大括号里面对应 ll 取该值满足 l≥d(v)−d(u)l\ge d(v)-d(u) 对应的概率,自然枚举 d(u)d(u) 的取值 xx,其概率为 fu′(x)f_u'(x),乘上 d(v)∈[d(u),d(u)+l]d(v)\in[d(u),d(u)+l] 的概率即 fv(x+l)−fv(x)f_v(x+l)-f_v(x)。

E[d(u)]=∫0M(u)xfu′(x)(∫xx+1fv′(y)(x−y+1) dy) dx(4)\mathbb{E}[d(u)]=\int_{0}^{M(u)}xf_u'(x)\left( \int_{x}^{x+1}f_v'(y)(x-y+1) \,\mathrm{d}y \right) \,\mathrm{d}x \tag{4}

枚举 d(u)d(u) 的取值 xx,乘上取该值的概率 fu′(x)f_u'(x),大括号里面表满足 d(u)≤d(v)≤d(u)+ld(u)\le d(v)\le d(u)+l 的概率。枚举 d(v)d(v) 的取值 y  (y∈[x,x+1])y\;(y\in[x,x+1]) 乘上 d(v)d(v) 取该值的概率 fv′(y)f_v'(y) ,再乘上 l≥y−xl\ge y-x 的概率 x−y+1x-y+1 。

E[d(v)]=∫0M(v)yfv′(y)(∫y−1yfu′(x)(x−y+1) dx) dy(5)\mathbb{E}[d(v)]=\int_{0}^{M(v)} yf_{v}'(y)\left(\int_{y-1}^{y} f_{u}'(x)(x-y+1) \,\mathrm{d}x \right)\,\mathrm{d}y \tag{5}

同上。

考虑一下以上这坨东西怎么求。(1),(2)(1),(2) 直接积分就完事了。

对于 (4),(5)(4),(5),以 (4)(4) 为例:

E[d(u)]=∫0M(u)xfu′(x)(∫xx+1fv′(y)(x−y+1) dy) dx=∫0M(u)xfu′(x)(x∫xx+1fv′(y) dy+∫xx+1fv′(y)(−y+1) dy) dx\begin{aligned} \mathbb{E}[d(u)]&=\int_{0}^{M(u)}xf_u'(x)\left( \int_{x}^{x+1}f_v'(y)(x-y+1) \,\mathrm{d}y \right) \,\mathrm{d}x \\ &=\int_{0}^{M(u)}xf_u'(x)\left( x\int_{x}^{x+1}f_v'(y) \,\mathrm{d}y+\int_{x}^{x+1}f_v'(y)(-y+1) \,\mathrm{d}y \right) \,\mathrm{d}x \\ \end{aligned}

对于 (3)(3):

E[l]=∫01l(∫0M(u)fu′(x)(fv(x+l)−fv(x)) dx) dlE[l]=∫0M(u)fu′(x)∫01l(fv(x+l)−fv(x)) dl dxE[l]=∫0M(u)fu′(x)(∫01lfv(x+l) dl−fv(x)∫01l dl) dx\begin{aligned} \mathbb{E}[l]&=\int_{0}^{1} l\left( \int_{0}^{M(u)}f'_u(x)\big(f_v(x+l)-f_v(x)\big)\,\mathrm{d}x \right)\,\mathrm{d}l \\ \mathbb{E}[l]&=\int_{0}^{M(u)}f'_u(x)\int_{0}^{1} l \big(f_v(x+l)-f_v(x)\big)\,\mathrm{d}l\,\mathrm{d}x \\ \mathbb{E}[l]&=\int_{0}^{M(u)}f'_u(x) \left(\int_{0}^{1} lf_v(x+l)\,\mathrm{d}l-f_v(x)\int_{0}^{1} l\,\mathrm{d}l \right)\,\mathrm{d}x \\ \end{aligned}

fv(x)∫01l dl=12fv(x)f_v(x)\int_{0}^{1} l\,\mathrm{d}l=\dfrac{1}{2}f_v(x) ,考虑 ∫01lfv(x+l) dl\int_{0}^{1} lf_v(x+l)\,\mathrm{d}l ,令 y=x+ly=x+l:

∫01lfv(x+l) dl=∫xx+1(y−x)fv(y) dy=∫xx+1yfv(y) dy−x∫xx+1fv(y) dy\begin{aligned} &\int_{0}^{1} lf_v(x+l)\,\mathrm{d}l\\ =&\int_{x}^{x+1} (y-x)f_v(y)\,\mathrm{d}y\\ =&\int_{x}^{x+1} yf_v(y)\,\mathrm{d}y-x\int_{x}^{x+1}f_v(y) \,\mathrm{d}y\\ \end{aligned}

那完事了。

题目 n≤80n\le 80,不用担心卡常,建议封装。

注:积分的基本运算法则(kk 为常数,原函数可积)

∫abkf(x) dx=k∫abf(x) dx\int_{a}^{b}kf(x)\,\mathrm{d}x=k\int_{a}^{b}f(x)\,\mathrm{d}x

∫ab(f(x)±g(x)) dx=∫abf(x) dx±∫abg(x) dx\int_{a}^{b} \big(f(x)\pm g(x)\big) \,\mathrm{d}x=\int_{a}^{b} f(x)\,\mathrm{d}x\pm \int_{a}^{b}g(x) \,\mathrm{d}x

交换求积顺序显然是可以的,跟交换求和顺序差不多。