给定$n$个空集合,有$2$操作。
- 在$[l,r]$集合中加入$x$,$|x|\leq n$
查询$[l,r]$集合中所有元素的第$k$大,$k\leq 2^{63}$
注意是第$k$大
权值线段树套区间线段树
考虑在权值线段树二分寻找答案时,可以在动态在每一个点建立区间选段树$sum=query(tree[rs],ql,qr)$,若$k<=sum$,往右跳,反之往左挑。($n\log^2 n$常数,内存过大,开$O2$才过得去)。
树状数组套主席树
考虑之前求第$k$大时主席树的建立。通过对比$tr[ql],tr[qr]$,这两个主席树从而确定答案,而这次要通过$tr[ql,qr]$,这些主席树确定答案。考虑吧用树状数组差分维护区间修改,区间查询。
整体二分
整体二分模版题,把树状数组的修改查询,改成线段树的,或则差分树状数组。
权值线段树套区间线段树
1 |
|
树状数组套主席树
1 |
|
整体二分
1 |
|