Expectation(树上直径期望)(Codeforces gym 102155 2018 Petrozavodsk Winter Camp, B. Short Random Problem)

该博客详细介绍了如何计算一棵边权重在[0,1]区间内随机的树的直径期望值。通过枚举直径中点,维护节点到子树最长链的长度分布函数,并利用树形动态规划进行转移。文章探讨了如何处理分段函数,以及在特定情况下如何计算期望值,包括当某个节点是叶节点时的特殊情况。最后,提供了实现算法的AC代码。" 126022963,13194418,卷积神经网络与SVM在汽车识别中的应用,"['深度学习', '神经网络', '计算机视觉', '机器学习', '图像识别']
摘要由CSDN通过智能技术生成

题目:给出一棵树,边权在 [ 0 , 1 ] [0,1] [0,1]间随机,求直径长度的期望值。

1.枚举直径中点在那条边上。
直径中点落在点上的几率十分小,可以看做0.
所以我们枚举每一条边求直径中点在这条边上时的(概率*此时直径长度的期望)。
2.求出答案我们需要维护每个点到子树内的最长链的长度分布情况,
这个是个连续的量,我们需要用一个函数来描述他:
f u ( x ) = P r [ d ( u ) ≤ x ] f_u(x) = Pr[d(u)\leq x] fu(x)=Pr[d(u)x]
比如,对于1->2->3这样一个简单的两个点的树。
f 2 ( x ) = x , f 3 ( x ) = 1 f_2(x) = x , f_3(x) = 1 f2(x)=x,f3(x)=1
f 1 ( x ) f_1(x) f1(x)分成了两段,
x ∈ [ 0 , 1 ] x\in[0,1] x[0,1] f 1 ( x ) = x 2 2 f_1(x) = \frac {x^2}2 f1(x)=2x2
x ∈ [ 1 , 2 ] x\in[1,2] x[1,2] f 1 ( x ) = 2 x − x 2 2 − 1 f_1(x) = 2x-\frac {x^2}2-1 f1(x)=2x2x21
所以简单的说我们的树形 D P DP DP中要维护的答案是一个个分段函数。
要如何转移呢?
需要两个操作,把儿子的函数加上一条边后取最长链即取 max ⁡ \max max和加上一条边。
max ⁡ \max max很简单, P r [ m a x ( a , b ) ≤ x ] = P r [ a ≤ x ] P r [ b ≤ x ] Pr[max(a,b)\leq x] = Pr[a\leq x] Pr[b\leq x] Pr[max(a,b)x]=Pr[ax]Pr[bx]
就是两个函数乘起来。(注意所有的函数都是在整数处分段,这为我们写代码提供了便利)。
加上一条边很好想出来: f ( x ) = ∫ x − 1 x g ( y ) d y f(x) = \int_{x-1}^{x}g(y)\rm{d} y f(x)=x1xg(y)dy
表示前面的和 ≤ y \leq y y,加入一个长为 x − y x-y xy的边。
注意这虽然是一个定积分,但是其上下界与 x x x相关,所以其实是关于 x x x的一个函数,而通过定积分与 y y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值