1 条题解

  • 0
    @ 2025-8-24 21:48:44

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Rui_R
    El Psy Congroo

    搬运于2025-08-24 21:48:44,当前版本为作者最后更新于2021-02-22 15:11:47,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题意:给定一棵树,结点数为 nn,一个人从起点 ss 出发,在上面等概率选当前能走的边走,直到走到终点 tts,ts,t 未知。求他所经过边数的期望。

    原题

    dud_u 表示结点 uu 的度数,fuf_u 表示 ufa(u)u \to fa(u) 的期望步数,其中 urootu \ne \text{root}frootf_{\text{root}} 没有定义

    $$f_u = \frac{1}{d_u} [1+\sum_{fa(v)=u} (f_v+f_u+1)] $$

    解方程得到

    fu=du+fa(v)=ufvf_u = d_u + \sum_{fa(v) = u} f_v

    gug_u 表示 fa(u)ufa(u)\to u 的期望步数,定义 groot=0g_{\text{root}}=0

    fa(u)rootfa(u) \ne \text{root}

    $$g_u = \frac{1}{d_{fa(u)}}[1+(1+g_{fa(u)}+g_u)+\sum_{fa(v)=fa(u),v\ne u}(1+f_v+g_u)] $$

    解方程得到

    $$g_u=d_{fa(u)}+g_{fa(u)}+\sum_{fa(v)=fa(u),v\ne u} f_v=f_{fa(u)}-f_u+g_{fa(u)} $$

    fa(u)=rootfa(u) = \text{root}

    $$g_u=\frac{1}{d_{fa(u)}}[1+\sum_{fa(v)=fa(u),v\ne u}(1+f_v+g_u)] $$

    解得

    $$g_u = d_u+\sum_{fa(v)=fa(u),v\ne u} f_v=f_{fa(u)}-f_u $$

    由于 groot=0g_{\text{root}}=0 ,两者可以合并:

    gu=ffa(u)fu+gfa(u)g_u = f_{fa(u)}-f_u+g_{fa(u)}

    F(u,v)F(u,v) 表示 u,vu,v 这条链上所有点的 ff 的和,不含 vv

    G(u,v)G(u,v) 表示 u,vu,v 这条链上所有点的 gg 的和,不含 uu

    f,gf,g 可以线性求出。这样,如果已知 s,ts,t ,就可以通过 F(s,lca(s,t))+G(lca(s,t),t)F(s,\text{lca}(s,t)) + G(\text{lca}(s,t),t) 求出期望。

    考虑求答案:枚举 lca(s,t)=u\text{lca}(s,t)=u

    uvu \in v 表示 uuvv 的子树中,uvu \notin v 表示 uu 不在 vv 的子树中。

    那么此时所有情况的期望和就是

    $$\sum_{x \in u} G(u,x)+\sum_{fa(v)=u} ([size(u)-size(v)] \sum_{x \in v} F(x,u)+size(v)\sum_{x \notin v,x \in u} G(u,x) ) $$

    意思是,分别计算 s=xs=x 时,svs \in v 时的期望和。

    预处理 v=1v=1 时的 FFu=1u=1 时的 GG ,并统计子树内这两个值的和。

    那么答案可以 O(n)O(n) 计算得到。最后除掉 n2n^2 就好了。

    • 1

    信息

    ID
    2427
    时间
    1000ms
    内存
    125MiB
    难度
    6
    标签
    递交数
    0
    已通过
    0
    上传者