「APIO2019」路灯 (K-D Tree / 树套树 / CDQ + 树状数组)
2021-04-08 04:26
标签:关键点 这一 line fir 一个 inline fine sdi 排序 首先想到一个简单的问题转化 对于一个询问,联通的时间是若干连续的区间\([L_i,R_i]\) 所有的\(L_i,R_i+1\)都是关键点,即由不连通变为联通的时间 和 由联通变为不连通的时间 把答案转化为\(\sum R_i+1-L_i\)即可 问题转化为对于当前的操作,找到它是那些询问的关键点 如果是合并操作,被合并的两个区间之间变得联通 如果是分裂操作,裂开的两个区间之间不再联通 可以用set维护上述区间,发现每次被更新的值都是一个二维区间 算上时间这一维,问题转化为一个类 三维偏序问题,但是题限制了内存 限制了内存,很容易想到直接K-D Tree,实际运行也比较优秀 注意可以把要询问的点拿出来建出K-D Tree,每次区间修改即可 时间复杂度\(O(n\sqrt n)\),空间复杂度\(O(n)\) 由于已知查询的节点,树套树的内存可以优化到\(O(n\log n)\) 把要询问的点拉出来,每次询问在第二维中有\(\log n\)次单点查询,所以需要被查询的位置一共只有\(n\log n\)个 把这些会被查询的位置拿出来建成\(n\)棵静态的线段树,更新就直接在这些静态的线段树上区间更新即可 时间复杂度\(O(n\log ^2 n)\),空间复杂度\(O(n\log n)\) 是常规写法,不会被限制内存 CDQ一维,排序一维,树状数组一维,参见三维偏序 「APIO2019」路灯 (K-D Tree / 树套树 / CDQ + 树状数组) 标签:关键点 这一 line fir 一个 inline fine sdi 排序 原文地址:https://www.cnblogs.com/chasedeath/p/13380269.html「APIO2019」路灯 (K-D Tree / 树套树 / CDQ + 树状数组)
Part1 K-D Tree
#include
Part2 树套树(没有代码)
Part3 CDQ+树状数组
下一篇:SpringBoot之热部署
文章标题:「APIO2019」路灯 (K-D Tree / 树套树 / CDQ + 树状数组)
文章链接:http://soscw.com/index.php/essay/72705.html