1 枚举
2 模拟
3 构造
4 位运算的应用
5 查找
5.1 二分查找
5.2 分块查找
5.3 哈希查找HASH
5.3.1 线性探测法
5.3.2 字符串与哈希
6 搜索
6.1 深度优先搜索DFS
6.1.1 剪枝
6.1.2 人工栈DFS
6.2 宽度优先搜索BFS
6.3 启发式搜索
7 贪心法
7.1 哈夫曼树
8 高精度
8.1 大数加减法
8.2 大数乘法
8.3 大数除法与取余
9 排序问题
9.1 冒泡排序
9.2 选择排序
9.3 插入排序
9.4 快速排序
9.5 归并排序
9.6 桶排序
10 字符串
10.1 存储与操作
10.2 字符串匹配
10.3 AC自动机
10.4 扩展KMP算法
10.5 后缀数组
11 动态规划DP
11.1 递推法:状态,阶段,决策,边界
11.2 背包模型
11.3 子序列模型
11.3.1 最长不下降子序列
11.4 区间模型
11.4.1 RMQ问题
11.4.2 LCA问题
11.5 资源分配模型
11.6 滚动数组
11.7 记忆化搜索
11.8 状态与转移设计
11.9 状态压缩动态规划
11.10 树型动态规划
11.11 迭代型动态规划
11.12 插头DP
11.13 动态规划的决策优化
11.13.1 决策单调性与斜率优化
11.13.2 四边形不等式
11.13.3 高级数据结构优化
12 数据结构
12.1 队列
12.2 栈
12.2.1 性质与应用
12.3 堆
12.3.1 建立、插入、删除、查找
12.4 树
12.4.1 树的存储方式
12.4.2 二叉树的遍历
12.4.3 树状数组
12.4.4 线段树
12.4.5 伸展树(splay)
12.4.6 主席树(可持久化线段树)
12.4.7 树套树:如树状数组套线段树
12.4.8 动态树
12.4.9 笛卡尔树
12.4.10 k-d树
12.5 图
12.5.1 图的概念与性质
12.5.2 图的存储
12.5.3 连通分量与强连通分量
12.5.4 生成树问题:Prim、Kruskal
12.5.5 最短路径:Dijkstra、SPFA
12.5.6 拓扑排序
12.6 并查集
12.6.1 路径压缩
13 树的分治
13.1 基于边的分治
13.2 基于点的分治
13.3 基于链的分治
14 二分图匹配
14.1 最大匹配
14.2 最大权匹配
15 网络流
15.1 最大流与最小割
15.2 有费用的网络流
15.3 有流量上下界的网络流
16 数论
16.1 整数的性质
16.2 质数与整除
16.3 同余
16.4 欧拉函数
16.5 不定方程
16.6 中国剩余定理
16.7 数论经典问题
17 组合数学
17.1 鸽笼原理与Ramsey定理
17.2 排列组合与容斥原理
17.3 群论与置换群
17.4 Burnside引理与Pólya定理
17.5 数列与母函数
18 线性代数
18.1 矩阵乘法与递推关系
18.2 高斯消元与行列式
18.3 模线性方程组
19 几何问题
19.1 解析几何,图形与方程
19.2 计算几何,向量运算,高维几何
19.3 半平面交
19.4 凸包
19.5 几何经典问题
20 游戏与博弈论
20.1 最小最大原理
20.2 Nim游戏与SG定理
20.3 其他模型
21 快速傅里叶变换FFT
21.1 快速多项式乘法
21.2 单位模根