可以看到,所有关键点都留了下来,而且树的形态也被完好的保存了下来。往往未被选中的点并不影响答案,这些未被选中的点,以路径长度的形式存在于虚树中。
定理一:在一棵有根树中,任选 不重复的点,这 个点两两之间的不同的 LCA 个数不超过 个。
证明:我们考虑求出 个点两两之间的 LCA,将其按照到根的距离从到大到小排序,记为 。
我们考虑这样一个事实:假设 和 的 LCA 是 ,而如果 与 的 LCA 是 且 ,那么 与 的 LCA 也是 。考虑反证法,如果 与 的 LCA 不是 的话,那么 必然在 的子树中,由于 ,所以 到根的距离必然小于 到根的距离,这与「 在 的子树中」这一事实矛盾。
基于这一个事实,我们可以发现,所有 LCA 是 的一堆点,都可以被看作一个点(每个点对之后的 的贡献都是一样的)。所以对于 来说,可考虑的点就至多只有 个了。同理,所有 LCA 是 的一堆点,又可以被看作一个点。所以对于 来说,可考虑的点就至多只有 个了。一直压缩下去,对于 来说,可以考虑的点就至多只有 个了。至于 至多只有一个点可考虑,无法形成新的 LCA。所以 不可能存在。
Read full article from 虚树学习笔记 | Sengxian's Blog
No comments:
Post a Comment