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)\)。

posted @ 2026-09-30 09:36  循环一号  阅读(9)  评论(0)    收藏  举报