树上拓扑序

考虑小根堆,设 $x$ 当前所在树的结点数为 $size$。你需要计算将 $0 \sim size - 1$ 这 $size$ 个数分别填入 $x$ 所在树的结点中,能够产生多少种不同的多叉堆?
设方案数为 $f$,假设我们当前处理到 $u$,而 $u$ 的子树都被处理过了。
不妨先考虑二叉堆:$$f_u=f_{lc} \times f_{rc} \times C_{si_u-1}^{si_{lc}}$$
再考虑四叉堆:$$f_u= f_1 \times f_2 \times f_3 \times f_4\times C_{s_1+s_2+s_3+s_4}^{s_2+s_3+s_4} \times C_{s_2+s_3+s_4}^{s_3+s_4} \times C_{s_3+s_4}^{s_4}$$
$$= \prod f_i \times \frac{(s_1+s_2+s_3+s_4)!}{s_1! \times (s_2+s_3+s_4)!} \times \frac{(s_2+s_3+s_4)!}{s_2! \times (s_3+s_4)!} \times \frac{(s_3+s_4)!}{s_3! \times s_4!} $$
$$= \prod f_i \times \frac{(s_1+s_2+s_3+s_4)!}{s_1! \times s_2! \times s_3! \times s_4!}$$
推广到一般情况:
$$f_u = \prod_{v \in son_u} f_v \times \frac{(size_u - 1)!}{\prod size_v!}$$
不知道怎么变形成:(现在知道了,自己代入自己)
$$f_n = n! \times \prod_{i=1}^{n} \frac{1}{size_i}$$

例题 : P5689

posted @ 2023-10-17 14:22  Saka_Noa  阅读(33)  评论(0)    收藏  举报  来源