bzoj3065专题

替罪羊树套线段树 【bzoj3065】 带插入区间k小值

题目大意: 维护一个序列。 支持以下操作: 1、查询区间k小值 2、修改一个值 3、插入一个值 题目分析: 如果不带插入,主席树就可以搞定了。 带插入的话我们就既要维护权值大小,又要维护位置,一维的数据结构无法同时维护这两个值,所以就采用树套树的方法。 内层用权值线段树维护权值,外层用平衡树来维护位置。 但是平衡树里存的节点信息是一大颗果实饱满充满生机富有活力的线段树,无法快速

[bzoj3065]带插入区间K小值 解题报告

傻逼怎么做: 先用一个块链维护序列,做到 O(n√) O(\sqrt n)插入, O(1) O(1)比较两个点在序列中位置的大小。时间复杂度是 O(nn√) O(n\sqrt n)。 再用一个块链维护权值,每个块维护按位置排序的序列。查询的时候从小到大枚举每个块,先在块里二分统计块内在查询区间中的个数,然后如果发现答案在这个块里,就直接暴力找到第k小的是哪个。取块大小等于 O(nlog2n−−