【五校联考2015 8.20】宝藏

题目大意

给出一棵 n 个点的树。
若某一时刻你在点x上,那么下一时刻你会等概率的走到任意一个相邻的点 y 上。
给出Q个询问,形如 st p1 p2...pk ,表示问从 st 出发,沿途依次经过 p1,p2,...,pk (倘若经过 p2 之前到过了 p3 ,在经过 p2 之后依旧要重新经过 p3 一次。)期望时间是多少。

n,pq<50000


分析

我的想法是暴力模拟 1000 步,结果爆零了。然而模拟 3000 步可以捞到 30 分= =

根据期望的线性性,可以发现每个询问可以分解成求若干个起点到对应终点的期望时间,然后加起来就是改询问的答案。

不妨记 E(x) x 到终点的期望时间。那么可以列出式子
E(x)=(x,y)EE(y)dx+1
其中 dx 表示点 x 的度数。
注意条件那里的E符号上与期望冲突了,但它实际上表示边集,而且注意是求和后再加一。

那么接下来的就是带入 E(T)=0 ,然后高斯消元解出 E(S) 就可以了。

然而考虑这里是一棵树,尤其是消元的过程十分的特殊。

叶子的等式
E(x)=E(fax)+1

倒数第二层的等式
    E(x)
=(x,y)EE(y)dx+E(fax)dx+1
=(x,y)EE(x)+1dx+E(fax)dx+1
=dx1dx(E(x)+1)+E(fax)dx+1
=(dx1)+E(fax)+dx
=E(fax)+2dx1

它化成了一种 E(fax)+b 的形式。这启示我们是否可以沿着这个思路想下去。

假如现在有任意一个点 x 我们要推出E(x)的表达式,前提是它的孩子 y 都可以写成E(y)=E(fay)+by的形式。

    E(x)
=(x,y)EE(y)dx+E(fax)dx+1
=(x,y)EE(x)+bydx+E(fax)dx+1
=E(fax)+(x,y)Eby+dx

成功地化成了 E(fax)+b 的形式。而且我们发现 bx 的值就是 x 这棵子树的度数和。
那么剩下的就是从终点开始递推回来了。我们发现从x的某一个祖先递推回 x 大致上是把这段路上的b值加起来,这个用个前缀和数组减一减就可以了。问题在于我们如何自下而上的递推呢?

直接移项肯定是有问题的。这些等式都是根据 E(T)=0 消出来的。也就是说 E(T) 本身不存在等式可以供你移项。其它移项后的等式就更加是子虚乌有了。

不妨考虑旋根。当然这里我们不是真正意义上的旋根,只是在脑中把它旋过来。我们发现旋转后的新的 b 值也是很好计算的。用同样的方法维护一下,我们就可以实现自下而上的递推了。

时间复杂度O(pqlogn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值