题解 [ABC160F] Distributing Integers

做 ABC 的 EF 真是惊喜多多。

求树以每个点为根的拓扑序数量。

自己想的时候想了一个奇怪的 dp 式子,开始换根的时候就发现没辙了。

其实树的拓扑序数量有一个结论,即这个数量是 \(\frac{n!}{\prod size}\)
原理的话考虑从最上面往下走,把第一个固定下来,原来的 \(n!\) 个排列只剩下 \(\frac{n!}{size_1}\) 了,然后每次往下走的时候都得确保在子树中这个根是最前面的,所以每一个子树的排列都只有 \(\frac{1}{size}\) 的满足条件。

那么就只要求出 \(\prod size\) 就行了,这个很好换根 dp。

涨知识了!
感觉这个结论的证明过程也是一个非常好的处理排列合法性的思路,每次让剩下的排列只剩下一些合法,最后得到这个式子。

posted @ 2021-07-26 14:56  Acfboy  阅读(70)  评论(0)    收藏  举报