可持久性线段树-区间修改与查询

· · 个人记录

再不写一点我怕我一个月后回来复习都忘了怎么回事了

具体的可持久性线段树图详见这里。我记一点自己一开始不理解的

首先是比较,因为我开的是一个权值树欸,我记录的是从l到r每个数都出现了几次欸,那我在给定的区间里面我二分一下,我二分出来一个数mid,我在两棵树左子树元素个数差比较一下即可,如果差数大于我这个k,说明什么?我还没到第k小呐,我得把区间范围缩小缩小,哦于是我得去左子树,反过来如果差数小,说明前面一定有比我小的,我小多了,好我就去右子树转悠。

至于建树...这个东西吧......假设一棵初始的线段树,我加几个结点的话,就新建那几个结点而已,并且新建一个根节点,我让根节点、没变的几个点和新建的几个点再组成一棵树不就完了,还省了空间。这就是动态开点

这里需要注意,别看说是线段树不同,其实区间还是相同的,不会说我这棵扩展一点区间出去这种。(或许有,但目前尚未接触)