通常我们在树上会遇到一些比较棘手的问题,将问题简化后还是不能方便地解决,考虑以下处理方式:

  1. 树上启发式合并
    算法过程:
    当我们在维护子树信息的时候,对儿子子树进行合并,考虑元素较少的一项合并到元素较多的一项。
    时间复杂度:\(O(N \times log_{2} N)\)
    证明:设元素较小的一项有 \(a\) 个元素,那么元素较多的一项至少有 \(a\) 个元素,那么意味着每次合并元素数量至少翻倍,由于元素数量不能超过 \(N\),则对于每一个节点,至多会有 \(O(\log_{2} N)\) 次合并操作,那么总时间复杂度是 \(O(N \times log_{2} N)\)

  2. 离线树剖
    算法过程:
    当在两点路径维护一些复杂一点的

posted on 2024-08-10 00:30  appear  阅读(4)  评论(0)    收藏  举报