权值线段树是主席树的基础。
线段树:是一种二叉搜索树,把区间划分为以下单元区间,每个单元区间对应线段树的一个叶结点。线段树可以快速查找某一个节点在若干条线段中的出现次数,时间复杂度为O(logN)。
线段树的适用范围很广,可以用来进行在线区间维护和查询区间上的最值,求和,每次更新和查询的时间复杂度为O(logN)。
权值线段树:相比于线段树,每个节点用来表示一个区间的数的出现次数。
权值线段树最重要的应用是查询所有树的第k大值,或者求第k小值。除此之外,权值线段在离散化之后可以轻松维护中位数,插入,删除,查询的时间复杂度都是O(logn) 。
权值线段树下使用中经常MLE,如果一次开出权值线段树的所有点,则必定会MLE,此时我们就需要使用动态开点的方式来避免MLE。