前言
该系列笔记意在学习总结数据结构和算法相关知识点、分享竞赛和考研/工作面试中涉及的题目。
该系列文章不定期更新,预计在2021-06-01
前全部完成。
以下是相关链接。如有错误,欢迎指正。
1 基础算法
1.1 枚举/遍历
1.2 模拟
1.3 递归&分治
1.4 贪心
1.5 排序
1.5.1 选择排序
1.5.2 冒泡排序
1.5.3 插入排序
1.5.4 计数排序
1.5.5 基数排序
1.5.6 快速排序
1.5.7 归并排序
1.5.8 堆排序
1.5.9 桶排序
1.5.10 希尔排序
1.5.11 锦标赛排序/树形选择排序
1.6 前缀和&差分
1.7 二分
1.8 倍增
2 搜索算法
2.1 DFS
2.2 BFS
2.3 双向搜索
2.4 启发式搜索
2.5 A-star
2.6 迭代加深搜索
2.7 IDA*
2.8 回溯法
2.9 Dancing Links
3 动态规划
3.1 相关概念
3.2 记忆化搜索
3.3 背包DP
3.4 区间DP
3.5 DAG上的DP
3.6 树形DP
3.7 状压DP
3.8 数位DP
3.9 插头DP
3.10 计数DP
3.11 动态DP
3.12 概率DP
3.13 DP优化
3.13.1 单调队列/单调栈优化
3.13.2 斜率优化
3.13.2 四边形不等式优化
3.13.2 状态设计优化
4 字符串
4.1 字符串相关基础知识
4.2 字符串匹配
4.3 字符串哈希
4.4 字典树 (Trie)
4.5 前缀函数与 KMP 算法
4.6 Boyer-Moore算法
4.7 Z 函数(扩展 KMP)
4.8 自动机
4.9 AC 自动机
4.10 后缀数组 (SA)
4.11 后缀自动机 (SAM)
4.12 广义后缀自动机
4.13 后缀树
4.14 Manacher
4.15 回文树
4.16 序列自动机
4.17 最小表示法
4.18 Lyndon 分解
5 数学
5.1 符号
5.2 复数
5.2 位运算
5.4 快速幂
5.5 进位制
5.6 高精度计算
5.7 平衡三进制
5.8 数论
5.8.1 素数
5.8.2 最大公约数
5.8.3 欧拉函数
5.8.4 筛法
5.8.5 欧拉定理 & 费马小定理
5.8.6 类欧几里德算法
5.8.7 裴蜀定理
5.8.8 乘法逆元
5.8.9 线性同余方程
5.8.10 中国剩余定理
5.8.11 二次剩余
5.8.12 BSGS
5.8.13 原根
5.8.14 卢卡斯定理
5.8.15 莫比乌斯反演
5.8.16 杜教筛
5.8.17 Min_25 筛
5.8.18 分解质因数
5.9 多项式
5.9.1 多项式部分简介
5.9.2 拉格朗日插值
5.9.3 快速傅里叶变换
5.9.4 快速数论变换
5.9.5 快速沃尔什变换
5.9.6 多项式求逆
5.9.7 多项式开方
5.9.8 多项式除法|取模
5.9.9 多项式对数函数|指数函数
5.9.10 多项式牛顿迭代
5.9.11 多项式多点求值|快速插值
5.9.12 多项式三角函数
5.9.13 多项式反三角函数
5.9.14 常系数齐次线性递推
5.10 生成函数
5.10.1 生成函数简介
5.10.2 普通生成函数
5.10.3 指数生成函数
5.11 线性代数
5.11.1 向量
5.11.2 矩阵
5.11.3 高斯消元
5.11.4 线性基
5.12 线性规划
5.12.1 线性规划简介
5.12.2 单纯形算法
5.13 组合数学
5.13.1 排列组合
5.13.2 卡特兰数
5.13.3 斯特林数
5.13.4 贝尔数
5.13.5 伯努利数
5.13.6 康托展开
5.13.7 容斥原理
5.13.8 抽屉原理