概述
在处理某些树上问题时,并非树上的所有节点都起作用;这时可以借助虚树,将树上重要的点构造成一棵树,在虚树上处理问题,优化时间复杂度。
模板
用栈来维护虚树上的一条从根到 $u$ 的链。如果 $u$ 是栈顶节点的儿子,则入栈;否则将栈中 dfn 值大于 $\text{lca}(u,s.top())$ 的元素出栈。
伪代码
1 | 将树上所有关键点按照 dfs 序排序 |
在处理某些树上问题时,并非树上的所有节点都起作用;这时可以借助虚树,将树上重要的点构造成一棵树,在虚树上处理问题,优化时间复杂度。
用栈来维护虚树上的一条从根到 $u$ 的链。如果 $u$ 是栈顶节点的儿子,则入栈;否则将栈中 dfn 值大于 $\text{lca}(u,s.top())$ 的元素出栈。
1 | 将树上所有关键点按照 dfs 序排序 |
Update your browser to view this website correctly. Update my browser now