一、李超树

  • 概念:一种维护平面上若干直线,支持查询覆盖某个点的最高/最低直线的线段树.
  • 原理:维护直线(建立在线段树、树链剖分的基础上)

二、左偏树(可并堆)

  • 前置知识:
  1. 外结点:左子树或右子树为空的结点
  2. 距离:左偏树种一个结点x到它子结点中最近外结点经过的边数,记为dist(x)(若外结点距离为0,空结点(null)的距离为-1)
  • 概念:支持O(logn)合并的堆
  • 性质:
  1. 堆性质
  2. (左偏性质)左偏树中任意结点满足它的左子树的距离大于等于右子树的距离。即dist(left(x))\geq dist(right(x)) 
  3. 左偏树中任意结点的左子树和右子树都是左偏树
  • 定义:具有左偏性质的堆有序二叉树

三、线段树合并

  • 概念:对于一个结点,若两线段树都有,则直接合并信息,若只有一个有,直接返回即可
  • 原理:一般重合部分较小
  • 均摊时间复杂度:O(logn)

四、Splay

  • 常用用途:维护可快速提取区间的数列,以及实现LCT

五、fhqTreap

  • 概念:分为split和merge两种操作的平衡树
  • 原理:在merge方法内利用rand()维护平衡性,split方法可按权值/子树大小进行事务(此时权值小于等于k在左子树中,大于等于k在右子树中)

六、三维偏序问题(特殊)

  • 题面:给定三个长度为n的排列A,B,C,你需要统计有多少对(i,j)满足A_{i}<A_{j}B_{i}<B_{j}C_{i}<C_{j}。(n\leq 5\times 10^{6}
  • 原理:利用容斥原理特殊化后,正常解题

七、哈希表树状数组(动态开点树状数组)

八、可持久化线段树(主席树)

  • 前置知识:
  1. 权值线段树:记录权值的线段树,a[1~n]需要离散化

九、动态树(LCT)

  • 例题:动态图连通性(最大瓶颈路问题)