通常我们在树上会遇到一些比较棘手的问题,将问题简化后还是不能方便地解决,考虑以下处理方式:
-
树上启发式合并
算法过程:
当我们在维护子树信息的时候,对儿子子树进行合并,考虑元素较少的一项合并到元素较多的一项。
时间复杂度:\(O(N \times log_{2} N)\)
证明:设元素较小的一项有 \(a\) 个元素,那么元素较多的一项至少有 \(a\) 个元素,那么意味着每次合并元素数量至少翻倍,由于元素数量不能超过 \(N\),则对于每一个节点,至多会有 \(O(\log_{2} N)\) 次合并操作,那么总时间复杂度是 \(O(N \times log_{2} N)\)。 -
离线树剖
算法过程:
当在两点路径维护一些复杂一点的
浙公网安备 33010602011771号