平衡树的简单替代品
1、STL / gnu_pbds
1、vector<int>
常用,动态空间注意比较慢,远古题数据小才建议使用。
| 支持操作 | 复杂度 |
|---|---|
| 序列类别 | |
| 随机访问 | \(O(1)\) |
| 尾部插入删除 | \(O(1)\) |
| 随机插入删除 | \(O(玄学),O(\sqrt{n})\) |
| 集合类别 | |
| none |
2、set<int>
维护数集的,它的常数真的很奇妙。
| 支持操作 | 复杂度 |
|---|---|
| 序列类别 | |
| none | |
| 集合类别 | |
| 前驱后继 | \(O(\log(n))\) |
| 随机插入删除 | \(O(\log(n))\) |
| 查找某数 | \(O(\log(n))\) |
3、rope
维护序列,不熟,跳过,但是可以区间覆盖,所以能通过文艺平衡树板子,操作复杂度 \(O(\sqrt{n})\)。
4、pbds_tree
标准的平衡树了。
只能维护数集,功能略强于 set。
| 支持操作 | 复杂度 |
|---|---|
| 序列类别 | |
| none | |
| 集合类别 | |
| 前驱后继 | \(O(\log(n))\) |
| 随机插入删除 | \(O(\log(n))\) |
| 查找某数 | \(O(\log(n))\) |
| 查询数的排名 | \(O(\log(n))\) |
| 查询 kth | \(O(\log(n))\) |
数据结构
0、链表
指针位置插入删除,指针移动一格 \(O(1)\)。
1、块状链表 / 跳表
很难写,还不如写平衡树 / vector。
支持类型不重要,我不会写的。(
2、值域线段树
很复杂,先跳了。
3、树状数组上二分
很神奇的一种操作,没有随机插入时很好用。
| 支持操作 | 复杂度 |
|---|---|
| 序列类别 | |
| 随机访问 | \(O(\log(n))\) |
| 头尾部插入删除 | \(O(\log(n))\) |
| 随机删除 | \(O(\log(n))\) |
| 集合类别 | |
| none |

浙公网安备 33010602011771号