题解:P11736 [集训队互测 2015] 胡策的小树

posted on 2025-02-18 13:52:52 | under | source

题意:给一棵有根树,初始时每个点有一只猴子,记 \(a_i\) 表示一轮跳跃 \(i\) 上的猴子成功跳到父亲的概率为 \(\frac {a_i}n\),若跳跃失败等概率掉到子树一点。进行有限轮跳跃,权值为每轮跳跃中成功跳的比例的平均值的期望。求将 \(a_i\gets (a_i+x)\bmod n\) 后期望的最小值。\(n\le 200000\),数据随机生成。

先不带修。

\(f_{u,i}\) 表示节点 \(u\)\(i\) 轮猴子期望个数,\(s_i=|subtree_i|\)\(p_i=\frac{a_i}n\)\(q_i=\frac {1-p_i}{s_i}\),有转移:

\[f_{u,i+1}=\sum\limits_{v\in anc_u} q_vf_{v,i}+\sum\limits_{v\in son_u}p_vf_{v_i} \]

神秘结论(但符合人类直觉):\(f\) 经过若干轮后趋向平稳,记为 \(g\)

那么问题等价于求 \(g\),列出方程:

\[g_u=\sum\limits_{v\in anc_u}q_v g_v+\sum\limits_{v\in son_u} p_vg_v \]

可以类比树上高消的方法,定义 \(h_u=\sum\limits_{v\in anc_u}q_vg_v\),代入一下,化简一下,就能求出 \(\frac {h_{fa_u}}{h_{u}}\) 的递推式(显然 \(\frac {h_{fa_1}}{h_1}=0\))。然后求出 \(\frac {h_u}{h_1}\),然后求出 \(\frac {g_u}{g_1}\),又因为 \(\sum g=n\),所以就解出来了。

接着你发现带修就是诈骗。考虑每个 \(x\),一定存在一个 \(a_y=0\),也就意味着跳不出 \(y\) 子树。子树外点每一轮有一定可能掉进去,轮数足够多所以忽略不记。

每次该子树求解,期望次数为 \(O(n\log n)\),那么这题就做完了。

posted @ 2026-01-15 08:19  Zwi  阅读(3)  评论(0)    收藏  举报