一、基础算法
1、排序
快速排序:
快速排序【模板】
第k个数【快速选择】
基数排序:
基数排序【模板】
2、二分查找
3、高精度
4、前缀和与差分
前缀和【模板】
矩阵前缀和【模板】
差分【模板】
矩阵差分【模板】
5、双指针算法
6、位运算
7、离散化
8、区间合并
9、RMQ
二、动态规划
1、线性DP
数字三角形:
摘花生
最低通行费
方格取数
方格取数(20CSPJ普及组)【可上下走】
传纸条(NOIP2008 提高组)
最长上升子序列【LIS】:
怪盗基德的滑翔翼
登山,合唱队形
友好城市【不相交匹配转化】
最大上升子序列和
拦截导弹【dilworth定理】
最长公共子序列【LCS】:
最长公共子序列【相同元素可转最长上升】
最长公共上升子序列【LCIS】:
最长公共上升子序列【O(n^2)做法】
其他:
小球染色【组合数求和】
2、背包问题
01背包问题:
采药【模板】
装箱问题
数字组合【体积条件:恰好为V,求方案数】
能量石(Google Kickstart2019 Round B Problem B)【贪心,01背包,价值随体积增大而减小】
完全背包问题:
买书【体积条件:恰好是V,求方案数】
货币系统【体积条件:恰好是V,求方案数】
货币系统(NOIP2018 提高组)【体积条件:恰好是V,求是否存在方案】
多重背包问题:
庆功会【模板】
二维费用问题:
宠物小精灵【模板】
潜水员【体积条件:不少于V,求最小价值】
分组背包问题:
金明的预算方案(附件数<=2)
机器分配【分组背包,求具体方案】
有依赖背包问题:
二叉苹果树【体积为1的弱化版】
3、状态机模型
大盗阿福
买卖股票的时机 IV(LeetCode 188 Hard)
买卖股票时机含冷冻期(LeetCode 309)
设计密码【不包含某个子串的方案数,KMP】
4、状态压缩DP
棋盘类状压:
蒙德里安的梦想
国王 (ZJOI 2008)
玉米田
炮兵阵地(NOI2001)【由前两行递推】
集合类状压:
最短Hamilton路径
毕业旅行问题 (字节跳动2019春招研发)
愤怒的小鸟(NOIP2016 提高组)【重复覆盖问题】
5、区间DP
环形区间DP:
石子合并(NOI1995)
能量项链(NOIP2006 提高组)
记录方案:
加分二叉树(NOIP2003 提高组)
二维区间DP:
棋盘分割(NOI1999)
6、树形DP
Balancing Act【树的重心】
Cow Marathon【树的直径】
【树的中心】
数字转换【约数建边+树的直径】
没有上司的舞会【每条边至多选1点】
战略游戏【每条边至少选1点】
皇宫看守【每个点自身被选或其相邻的点被选】
7、数位DP
数字游戏【区间内的不降数】
Amount of Degrees【区间内B进制有且只有K个1】
Windy 数【相邻数字只差>=2、不含前导0】
数字游戏 2【各位数字之和模N为0】
不要 62【不包含4和62】
8、单调队列优化
9、斜率优化
三、搜索
1、BFS
①、Flood Fill
池塘计数【Flood Fill模板】
城堡问题(The Castle)【Flood Fill、并查集】
山峰和山谷
②、最短路模型
③、多源BFS
④、最小步数模型
⑤、双端队列广搜
⑥、双向广搜
⑦、A*
2、DFS
①、连通性模型
②、搜索顺序
③、剪枝与优化
④、迭代加深
⑤、双向DFS
⑥、IDA*
四、数据结构
0、STL
1、链表与邻接表
2、栈与队列
3、kmp
4、Trie
5、堆
6、Hash表
7、并查集
并查集【模板】
格子游戏【判断环】
连通块中点的数量【记录集合元素个数】
8、树状数组
9、线段树
10、可持久化数据结构
11、平衡树——Treap
12、AC自动机
五、图论
1、树和图遍历
树的深度优先遍历:
Balancing Act【树的重心】
树的宽度优先遍历:
Cow Marathon【树的直径】
2、最短路
Dijkstra【证明+模板】
Bellman-Ford、SPFA【证明+模板】
Floyd【证明+模板】
3、最小生成树
Prim、Kruskal【模板】
局域网【不改变连通性、去掉权值和最大】
4、差分约束
5、最近公共祖先
6、有向图的强连通分量
7、无向图的双连通分量
8、二分图
9、欧拉回路和欧拉路径
10、拓扑排序
六、贪心
1、区间问题
2、Huffman树
3、排序不等式
4、绝对值不等式
5、推公式
七、数学知识
1、质数
试除法判断质数【
O
(
n
)
O(\sqrt{n})
O(n)】
试除法分解质因数【
O
(
n
)
O(\sqrt{n})
O(n)】
筛质数【基本 / 埃氏 / 线性筛法】
2、约数
试除法求约数【
O
(
n
)
O(\sqrt{n})
O(n)】
求约数个数【是质数的约数个数+1相乘】
求约数之和
最大公约数【辗转相除】
3、欧拉函数
4、快速幂
5、扩展欧几里得算法
扩展欧几里得、裴蜀定理
线性同余方程、扩展欧几里得求逆元【a和模数互质】