整体二分的升华

看到一篇文章的操作将多数整体二分+树状数组的做法将树状数组省掉了。

例:比如静态区间第k小。

无需使用树状数组来数点,将区间[L,R]变成两个区间[1,L-1] [1,R]

将这两个区间和原序列放在一起排序位置 对于当前mid 扫一遍序列。

对于一个标记[1,x] 则可以通过前缀和标记求出答案。

通过作差快速得到check的结果。

然后递归下去 类似于归并保证元素之间的有序性。总复杂度降一个log。

例:MET-Meteors

利用可持久化线段树+二分可以做这个题,不过对空间开销较大。

似乎可以使用可持久化树状数组 常数小一点。不知道我的那个可持久树状数组是否正确,有时间再实现确认吧。

考虑整体二分,树状数组不需要可持久化,单点加区间求和即可。

关键是考虑将树状数组省掉,将单点加减的操作和询问的点位置进行排序扫一遍利用前缀和来统计贡献。

最后归并递归到下一层,不过细节有点多 能够实现。

posted @ 2022-08-26 20:59  chdy  阅读(16)  评论(0编辑  收藏  举报