以作者的水平为准
贪心
分治:归并排序(逆序对)
二分答案
二分查找
快速排序——>离散化
递归/递推
搜索:深搜(所有方案),宽搜(最优解)
DFS优化:迭代
最优性剪枝/可行性剪枝/搜索顺序
记忆化搜索
折半搜索
A*/IDA*
BFS优化:双向BFS
判重(康托展开)
优先队列搜索
DP:线性DP(LIS/LCS) O(nlogn)算法
区间DP
树形DP
背包类DP(01背包,完全背包,多重背包)
数位DP
DP优化:排除冗余状态
状态压缩
单调队列/数据结构
决策单调性
斜率优化
数据结构:队列/栈
链表(hash表)
ST表
并查集
二叉堆(可并堆)
树状数组(求逆序对)
线段树:动态开点
线段树合并
可持久化
平衡树(区间操作):Splay
fhq_treap
LCT
分块(莫队及其扩展)
主席树(静态/动态)
树套树(线段树+平衡树)
字符串算法:字符串hash
KMP
Trie——>可持久化/01 Trie
AC自动机
数论:质数筛(欧氏筛/线性筛)
分解质因数(唯一分解定理)
欧拉函数(单个/线性筛)——>欧拉降幂
乘法逆元:拓欧
费马小定理
线性顺推逆元
线性逆推阶乘逆元
组合计数(Lucas定理)
矩阵快速幂(加速递推)
高斯消元(高斯-约旦消元)
线性基
Miller_Rabbin
FFT/NTT
树论:树的直径/重心(点分治)
树链剖分
LCA:树剖
树上倍增
欧拉环游序
树上差分
基环树
图论:拓扑排序 O(nlogn)
最小生成树:Prim
Kruskal(Kruskal重构树)
最短路:Heap+dijkstra
SPFA(SLF/LLL)——>判负环
Floyd——>传递闭包
图的连通性:Tarjan求强连通分量——>2-SAT
割边/割点
点双连通分量/边双连通分量
二分图
网络流
其他:结论题emm……
尺取法
悬线法