一、归并排序

  • 步骤:1.分解问题 2.求解子问题 3.合并子问题

二、树分治

  • 主要用途:处理树上路径问题
  • 点分治:首先选一个点(重心),将无根树转为有根树,再递归处理每一棵以根结点的儿子为根的子树.
  • 边分治:先选边,统计删边递归(同上)(例题:BZOJ2870)
  • 链分治(树链剖分)

三、CDQ分治

  • 与普通分治相比,增加了计算对后面区间贡献的步骤.
  • 例:二维偏序问题

四、三分

  • 用于解决凸函数上最值问题
  • 复杂度:O(log_{3/2}C)(C:精度范围)

五、分块

六、莫队

  • 无修莫队(需要离线)
  • 带修莫队:相当于三维莫队,增加了时间线,在时间上移动.
  • 在线莫队:预处理n\sqrt{n}个信息(关键点),在此基础上进行操作

七、树上莫队

  • 借助dfs序(括号序列)将树上问题转化为序列上的问题(常见思路)
  • 例题:SPOJ COT2

八、块状链表

  • 复杂度:定位O(\sqrt{n}),插入/删除O(\sqrt{n})