小结:平衡树

概要:

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

技巧及注意:

细节十分多。

在对打tag的数据结构中,要操作的点的祖先一定要把tag都要下放完才行!这点非常重要!

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

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

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

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

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

例题:

treap:

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

splay(模板最好用最新的):

  1. Splay 伸展树
  2. 【BZOJ】1507: [NOI2003]Editor(Splay)
  3. 【BZOJ】1901: Zju2112 Dynamic Rankings(区间第k小+树套树)
  4. 【BZOJ】1503: [NOI2004]郁闷的出纳员(Splay)
  5. 【BZOJ】1500: [NOI2005]维修数列(splay+变态题)(维护连续的块)
  6. 【BZOJ】1014: [JSOI2008]火星人prefix(splay+hash+二分+lcp)(维护lcp)
  7. 【UOJ】【UR #2】猪猪侠再战括号序列(splay/贪心)(很sb的构造题我写了splay。。而且比赛还没调出来...)
  8. 【BZOJ】1251: 序列终结者(splay)(null的初值忘记多想想...)
  9. 【BZOJ】2209: [Jsoi2011]括号序列(splay)(括号序列#1)
  10. 【BZOJ】2329: [HNOI2011]括号修复(splay+特殊的技巧)(括号序列#2,上面一题的加强版,一定要注意打tag!tag的顺序及相互影响!

然后是lct,看我另一个专题吧。。

 

你可能感兴趣的:(小结)