设立本专栏的初衷在于,我意识到我学习过的很多算法,一段时间不使用就会被我遗忘,于是决定把学习这些算法的过程记录下来,也同时分享给其他有需要的人。
本专栏默认读者会使用基本的C++语言且掌握基本的贪心、搜索、动态规划思想。
方括号里的编号表示笔记中用到的前置算法(并不意味着该算法必须用到)。分类仅作参考,不一定准确。需要说明的是,因为作者的主攻题型具有偏向性,所以各种类型的笔记数量很可能不平衡。
本系列笔记写作时间跨度长,很多文章我写的时候并没有对相关算法有很深的了解,而且很多文章经过多次缝缝补补可能显得混乱,如果您阅读不畅请见谅。
1 动态规划
- 算法学习笔记(27): 最长上升子序列 【20】
- 算法学习笔记(58): 最长公共子序列
- 算法学习笔记(68): 数位DP
- 算法学习笔记(77): 凸壳优化DP【65,66】
- 算法学习笔记(79): 四边形不等式优化DP
- 算法学习笔记(80): 悬线法
2 数据结构
- 算法学习笔记(1) : 并查集
- 算法学习笔记(2) : 树状数组
- 算法学习笔记(7):种类并查集
- 算法学习笔记(12): ST表
- 算法学习笔记(14): 线段树
- 算法学习笔记(15): 珂朵莉树
- 算法学习笔记(23): 分块
- 算法学习笔记(24): 莫队【23】
- 算法学习笔记(44): 01字典树【43】
- 算法学习笔记(45): 二叉搜索树
- 算法学习笔记(46): 替罪羊树【45】
- 算法学习笔记(47): 二叉堆
- 算法学习笔记(49): 线段树的拓展【14】
- 算法学习笔记(50): 可持久化线段树【19,49】
- 算法学习笔记(66): 单调队列
- 算法学习笔记(67): 单调栈
- 算法学习笔记(76): zkw线段树【14】
- 算法学习笔记(81): 划分树
- 算法学习笔记(88): 线段树合并【49】
3 图论
- 算法学习笔记(3) : 存图
- 算法学习笔记(5):匈牙利算法 【3】
- 算法学习笔记(6):最短路问题 【3】
- 算法学习笔记(11): 差分约束 【6】
- 算法学习笔记(53): 拓扑排序【3】
- 算法学习笔记(57): 传递闭包【6】
- 算法学习笔记(69): 强连通分量【53】
- 算法学习笔记(70): 割点和桥【69】
- 算法学习笔记(93): 同余最短路【6】
4 树上问题
- 算法学习笔记(21): 最近公共祖先【3】
- 算法学习笔记(59): 重链剖分【14,21】
- 算法学习笔记(72): 树的重心【3】
- 算法学习笔记(73): 点分治【72】
- 算法学习笔记(86): 树上启发式合并【59】
- 算法学习笔记(87): 长链剖分【59】
5 网络流
- 算法学习笔记(28): 网络流【3】
- 算法学习笔记(29): 二者取一式问题【28】
- 算法学习笔记(30): 路径覆盖问题【28】
- 算法学习笔记(31): 最小费用最大流【6,28】
- 算法学习笔记(60): 上下界网络流【28,31】
6 数论
- 算法学习笔记(8):拓展欧几里得
- 算法学习笔记(9):逆元 【4, 8】
- 算法学习笔记(10): 中国剩余定理 【9】
- 算法学习笔记(17): 素数筛
- 算法学习笔记(18): 欧拉函数【17】
- 算法学习笔记(25): 卢卡斯定理【9】
- 算法学习笔记(33): 拓展欧拉定理【4,18】
- 算法学习笔记(34): 大步小步算法【4,8,33】
- 算法学习笔记(35): 狄利克雷卷积【18】
- 算法学习笔记(36): 莫比乌斯反演【35】
- 算法学习笔记(40): 原根【4,18】
- 算法学习笔记(41): 二次剩余【4】
- 算法学习笔记(48): 米勒-拉宾素性检验【41】
- 算法学习笔记(52): 杜教筛【36】
- 算法学习笔记(55): Pollard-Rho算法【48】
7 计算几何
8 组合数学
9 字符串
- 算法学习笔记(13): KMP算法
- 算法学习笔记(43): 字典树
- 算法学习笔记(82): Z算法
- 算法学习笔记(83): Manacher算法
- 算法学习笔记(84): 后缀数组【22】
- 算法学习笔记(85): 后缀自动机【43】
- 算法学习笔记(89): AC自动机【13,43】
- 算法学习笔记(90): 序列自动机
- 算法学习笔记(91): 广义后缀自动机【43,85】
- 算法学习笔记(92): 回文自动机【85】
10 线性代数
11 多项式
- 算法学习笔记(32): 快速傅里叶变换
- 算法学习笔记(42): 快速数论变换【9,32,40】