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

GYM102155B Short Random Problem

题意

给你一颗 n  (n80)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)=x1xg(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[ax]×Pr[bx]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)=vson(u)fv(x)g_u(x)=\prod_{v\in son(u)} f_v(x)

fu(x)=x1xgu(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 个函数的积分函数,包含区间 (i1,i](i-1,i]。对于一个 xRx \in R,设 y=xy = \left \lfloor x\right \rfloor,则

fu(x)=hy(x)hy(y)+hy1(y1)hy1(x1)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) 边权为 lluu 到子树最长链长度为 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) 小于等于具体枚举的 lld(u)d(u) 的期望。 外边一层积分枚举 ll

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

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

limrlfu(r)fu(l)rl=limΔx0fu(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}

枚举 llM(u)M(u)d(u)d(u) 能取到的最大值),大括号里面对应 ll 取该值满足 ld(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)(xy+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) ,再乘上 lyxl\ge y-x 的概率 xy+1x-y+1

E[d(v)]=0M(v)yfv(y)(y1yfu(x)(xy+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)(xy+1)dy)dx=0M(u)xfu(x)(xxx+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))dldxE[l]=0M(u)fu(x)(01lfv(x+l)dlfv(x)01ldl)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)01ldl=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(yx)fv(y)dy=xx+1yfv(y)dyxxx+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}

那完事了。

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

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

abkf(x)dx=kabf(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

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