平衡树学习导引

有大神评价的平衡树:

1.RedBlackTree

碾压性的速度优势和代码量

可以分裂合并,但是是log方的,可以可持久化

非常厉害的一个DS

没人写

2.ScapegoatTree

代码量小,随机数据下非常快,然而还是不如RBT

不能分裂合并,可以部分可持久化

但是在卡链的数据或者构造数据下表现就一般了

3.Treap(旋转式)

代码量小,速度较快

不能分裂合并,可以可持久化

挺好的东西

4.Treap(非旋转式)

代码量小,速度非常慢(这个其实看写法,正常人写的都很慢)

可以分裂合并可持久化,功能挺多的

但是速度实在慢

5.Splay

代码量一般,速度非常慢

可以分裂合并,不能可持久化

一般人学的平衡树

6.AVLTree

代码量较大,速度一般

如果修改少查询多的话AVL会很有优势,因为AVL的查询非常快

可以分裂合并,可持久化,但是分裂合并不怎么好写

好像没什么人会?

7.SizeBalancedTree

所谓的“自己发明的平衡树”

反正我感觉就是AVL然后强行重量平衡。。。

论文中他说速度可以吊打红黑树?

然而实际上是被RBT吊打出了一条街

好像还是有些人去学的

8.DigitalSearchTree(其实就是Trie和值域线段树)

效率较高,代码量较低

可以分裂合并,可持久化

但是空间较大,为了解决空间问题可以动态开点(多log)或者离线离散化

9.RRFGT

效率较高,代码量最小

可以分裂合并,可持久化

通用化的数据结构

嘿嘿嘿

10.B树系列

这个我也不会

11.值域分块

效率一般,毕竟有根号

也不是很好写

12.排序向量树(其实就是个vector)

非常好写,复杂度O( nm )。。。

但是因为常数问题所以可以过题

而且查kth是O( 1 ) 的


你可能感兴趣的:(OI)