线段树合并总结

貌似是AFO一周年了/ll
先开个坑简单记录点东西,感觉这玩意很厉害,但是学的不够透,所以准备等有时间了好好学一学。

全文假设单点修改次数为\(n\)(大部分情况单点修改次数就是树的节点数),线段树值域为\(m\)
将单点修改次数带权重链剖分,按照重剖dfs序进行线段树合并,那么空间复杂度为\(O(n)\)
\(k\)次单点修改的线段树节点个数为\(O(k\log(\frac{m}{k}))\)。考虑前\(\log k\)层至多为\(k\)个节点,后\(\log(\frac{m}{k})\)层至多为\(k\log(\frac{m}{k})\)个节点。
考虑到了一个叶子节点的时候,只有这个节点到根节点上每个轻边父节点对应的重儿子才存在一棵线段树,易知至多有\(O(\log n)\)棵线段树。这些从上往下,第\(i\)棵线段树上至多进行\(\frac{n}{2^{i-1}}\)次单点修改操作。那么此时总空间为\(\sum\limits_{i=1}^{\log n}\frac{n}{2^{i-1}}\log(\frac{m}{\frac{n}{2^{i-1}}})\)
简单做一个近似数量级估计约为\(\sum\limits_{i=1}^{\log n}\frac{n}{2^{i}}(\log(\frac{m}{n})+i)\)。错位相减化简得总空间复杂度为\(O(n\log(\frac{m}{n})+n)\),那个\(\log\)多数情况都是很小的值,可以看作线性空间复杂度。

posted @ 2022-07-29 11:25  Lebron_Durant  阅读(122)  评论(1)    收藏  举报