检测到 KaTeX 加载失败,可能会导致文中的数学公式无法正常渲染。
树套树是处理区间问题或二维数点问题的一种常见的数据结构。
其实树套树的原理很简单,就是利用外层树的树高为 和内层树允许动态开点的性质。经过一系列处理可以使得时空复杂度均保持在 的级别。
但树套树处理问题的局限性在于询问需要可以被分成 段区间分别处理后合并。
#线段树套 STL
#支持操作
- 修改某一位置上的数值;
- 查询 在区间内的前驱(前驱定义为小于 ,且最大的数)。
理论上还可以支持以下操作:
- 查询 在区间内的后继(后继定义为大于 ,且最小的数)。
#代码
1 |
|
#线段树套平衡树
#支持操作
- 查询 在区间内的排名;
- 查询区间内排名为 的值;
- 修改某一位置上的数值;
- 查询 在区间内的前驱(前驱定义为小于 ,且最大的数);
- 查询 在区间内的后继(后继定义为大于 ,且最小的数)。
#代码
这份代码在洛谷上被卡 TLE 了两个测试点,在 LibreOJ 上测试要比 FHQ Treap 版本慢上 1000 多毫秒,还比 FHQ Treap 长不少。
1 |
|
这份代码在洛谷上开了 O2 优化之后是可以以 2.00s 的运行时间刚好卡过去 P3380 【模板】二逼平衡树(树套树) 的:R81169175。
1 |
|