首页 > 代码库 > 小结:平衡树

小结:平衡树

概要:

平衡树大概是最常用的高级数据结构了,而treap用来进行一般的信息维护,splay用来进行高级的信息维护(比如区间操作、lct等)(map、set党自重QAQ)。

技巧及注意:

细节十分多。

treap中如果设小根堆的话(最好设小根堆),null的重量要设置为inf。

平衡树中的重复元素两种处理方法,看情况使用。

平衡树中的rank和select要和上一种注意事项结合起来,多想想。

splay中如果写lct要特判根。treap很多地方要传指针引用,splay完全不必。写好后最好手造几组hentai的数据(对应着题目的要求来),然后看是不是会re或wa。

数组一定不要开小,能开多大就开多大。

例题:

treap:【BZOJ】3224: Tyvj 1728 普通平衡树(某不科学的oj),【BZOJ】3196: Tyvj 1730 二逼平衡树(区间第k小+树套树),【BZOJ】1146: [CTSC2008]网络管理Network(树链剖分+线段树套平衡树+二分 / dfs序+树状数组+主席树),【BZOJ】1862: [Zjoi2006]GameZ游戏排名系统 & 1056: [HAOI2008]排名系统(treap+非常小心)

splay:模板及其细节在这里Splay 伸展树,【BZOJ】1507: [NOI2003]Editor(Splay),【BZOJ】1901: Zju2112 Dynamic Rankings(区间第k小+树套树),【BZOJ】1503: [NOI2004]郁闷的出纳员(Splay),然后是lct,看我另一个专题吧。。

 

小结:平衡树