思路总结

算法思路

有关树上拓扑排序计数问题的结论

给定 \(N\) 个点的有根树,考虑其拓扑排序计数的个数。

总排列数为 \(N!\),我们考虑把每个节点加入限制。

我们令 \(size_u\) 表示以 \(u\) 为根节点的子树的拓扑排序总数。

对于根节点一定满足根节点为第一个,那么总方案数就被缩减为 \(\frac {N!}{size_{root}}\)

依次加入限制,归纳可得 \(Ans=\frac {N!}{\prod_{i=1}^Nsize_i}\)

有关树上差分和可持久化线段树结合的思考

总所周知,可持久化线段树本质是前缀和,而前缀和与差分是互逆操作,所以这两者的结合可能能处理一些问题。

我们对每一个节点 \(u\) 到根节点的路径建立可持久化线段树,那么查询 \(u\rightarrow v\) 的路径上节点的信息可以被表示成一个树上差分的形式。

\[info_u+info_v-info_{lca}-info_{fa_{lca}} \]

例题:LuoguP2633 Count on a tree LuoguP3302 [SDOI2013]森林

posted @ 2020-04-12 10:57  chhokmah  阅读(117)  评论(0编辑  收藏