21.6.18 t2
tag:概率期望,bit,dfs序
考虑每一条实链 \((u,v)\)(\(v\) 为 \(u\) 的祖先) 的贡献。如果最终有一条极长实链 \((u,v)\),那么对于 \(v\) 子树中所有点,\(u\) 一定是操作序列中最后一个;同样的对于 \(fa_v\) 子树中所有点,\(v\) 一定不是操作序列中最后一个。
设 \(s_x=\sum_{lca(x,i)=x} a_i\),那么这个概率就等于 \(\frac{s_u}{s_v}\cdot(1-\frac{s_v}{s_{fa_v}})\)。
可以这么理解,\(P=\frac{\text{x为最后一个的排列个数}}{\text{排列个数}}=\frac{\text{x为第一个的排列个数}}{\text{排列个数}}\)(翻转一下就可以一一对应)
所以答案就是
\[\sum_{lca(u,v)=v}\frac{s_u}{s_v}\cdot(1-\frac{s_v}{s_{fa_v}})\cdot(d_u-d_v)^k
\]
暴力展开以后可以得到若干项,且每一项都是(一个常数)*(关于 \(u\) 的式子)*(关于 \(v\) 的式子),所以可以枚举 \(u\),用数据结构维护 \(v\)。
对于一次修改只会影响 \(O(1)\) 个点,直接暴力更新答案就行。
复杂度 \(O((n+m)klogn)\)