Astana Hard Metro 解题报告
首先令 \(d_u\) 表示 \(u\) 的儿子个数,\(c_u=\max(d_u,1)\),选择叶子 \(l\) 的贡献就是
\[\frac{\prod c_u}{\prod\limits_{x\in\text{anc}_l}c_x}
\]
然后考虑组合意义,\(\frac1{\prod\limits_{x\in\text{anc}_l}c_x}\) 的组合意义显然是从 \(1\) 开始每次随机走到一个儿子,走到叶子停下且最后停在 \(l\) 的概率,那么所有叶子的概率和显然是 \(1\),所以对于一个固定的树结构,其实只要求 \(\prod c_u\) 再除以叶子的个数。
对于一个固定的 \(L\),把 \(\prod c_u\) 用 product trick 处理,组合意义为对每个非叶子指定一个儿子的方案数。那么加点的任意时刻,对于每个非叶子 \(v\) 只需要知道是否已经指定了一个儿子。当前总点数为 \(t\),没有指定的非叶子数为 \(c\) 的方案数之和为 \(f_{L,c}\),那么加一个点有转移:
\[f'_{L,c}\gets f_{L,c}\times\frac Lt
\]
\[f'_{L,c+1}\gets f_{L,c}\times\frac Lt
\]
\[f'_{L+1,c-1}\gets f_{L,c}\times\frac ct
\]
\[f'_{L+1,c}\gets f_{L,c}\times\frac {t-L}t
\]
然后初始状态也是可以转移的,时间复杂度 \(\mathcal{O}(n(n+m)^2)\)。

浙公网安备 33010602011771号