快速排序:
快速排序【模板】
第k个数【快速选择】
归并排序:
归并排序【模板】
逆序对
基数排序:
基数排序【模板】
二分查找【模板】
数的范围
数的三次方根
高精度加法【模板】
高精度减法【模板】
高精度乘法【模板】
前缀和【模板】
矩阵前缀和【模板】
差分【模板】
矩阵差分【模板】
最长连续不重复子序列
位运算【模板】
二进制中1的个数
64位整数乘法
离散化【模板】
区间和
区间和并【模板】
数字三角形:
摘花生
最低通行费
方格取数
方格取数(20CSPJ普及组)【可上下走】
传纸条(NOIP2008 提高组)
最长上升子序列【LIS】:
怪盗基德的滑翔翼
登山,合唱队形
友好城市【不相交匹配转化】
最大上升子序列和
拦截导弹【dilworth定理】
最长公共子序列【LCS】:
最长公共子序列【相同元素可转最长上升】
最长公共上升子序列【LCIS】:
最长公共上升子序列【O(n^2)做法】
其他:
小球染色【组合数求和】
背包九讲模板
01背包问题:
采药【模板】
装箱问题
数字组合【体积条件:恰好为V,求方案数】
能量石(Google Kickstart2019 Round B Problem B)【贪心,01背包,价值随体积增大而减小】
完全背包问题:
买书【体积条件:恰好是V,求方案数】
货币系统【体积条件:恰好是V,求方案数】
货币系统(NOIP2018 提高组)【体积条件:恰好是V,求是否存在方案】
多重背包问题:
庆功会【模板】
二维费用问题:
宠物小精灵【模板】
潜水员【体积条件:不少于V,求最小价值】
分组背包问题:
金明的预算方案(附件数<=2)
机器分配【分组背包,求具体方案】
有依赖背包问题:
二叉苹果树【体积为1的弱化版】
大盗阿福
买卖股票的时机 IV(LeetCode 188 Hard)
买卖股票时机含冷冻期(LeetCode 309)
设计密码【不包含某个子串的方案数,KMP】
棋盘类状压:
蒙德里安的梦想
国王 (ZJOI 2008)
玉米田
炮兵阵地(NOI2001)【由前两行递推】
集合类状压:
最短Hamilton路径
毕业旅行问题 (字节跳动2019春招研发)
愤怒的小鸟(NOIP2016 提高组)【重复覆盖问题】
石子合并【模板题】
凸多边形的划分【高精度】
环形区间DP:
石子合并(NOI1995)
能量项链(NOIP2006 提高组)
记录方案:
加分二叉树(NOIP2003 提高组)
二维区间DP:
棋盘分割(NOI1999)
Balancing Act【树的重心】
Cow Marathon【树的直径】
【树的中心】
数字转换【约数建边+树的直径】
二叉苹果树【有依赖背包问题】
没有上司的舞会【每条边至多选1点】
战略游戏【每条边至少选1点】
皇宫看守【每个点自身被选或其相邻的点被选】
数字游戏【区间内的不降数】
Amount of Degrees【区间内B进制有且只有K个1】
Windy 数【相邻数字只差>=2、不含前导0】
数字游戏 2【各位数字之和模N为0】
不要 62【不包含4和62】
池塘计数【Flood Fill模板】
城堡问题(The Castle)【Flood Fill、并查集】
山峰和山谷
迷宫问题【最短路模型模板】
武士风度的牛
STL【模板】
链表【模板】
单调栈【模板】
单调队列【模板】:滑动窗口
KMP【模板】
Trie树【模板】
堆【模板】
并查集【模板】
格子游戏【判断环】
连通块中点的数量【记录集合元素个数】
树的深度优先遍历:
Balancing Act【树的重心】
树的宽度优先遍历:
Cow Marathon【树的直径】
Dijkstra【证明+模板】
Bellman-Ford、SPFA【证明+模板】
Floyd【证明+模板】
区间选点
最大不相交区间
区间分组
区间覆盖
合并果子【O(nlogn) / O(n)】
奶牛玩杂技
试除法判断质数【 O ( n ) O(\sqrt{n}) O(n)】
试除法分解质因数【 O ( n ) O(\sqrt{n}) O(n)】
筛质数【基本 / 埃氏 / 线性筛法】
试除法求约数【 O ( n ) O(\sqrt{n}) O(n)】
求约数个数【是质数的约数个数+1相乘】
求约数之和
最大公约数【辗转相除】
欧拉函数
线性筛求多个数的欧拉函数
欧拉定理
快速幂
快速幂求逆元【模数为质数】
扩展欧几里得、裴蜀定理
线性同余方程、扩展欧几里得求逆元【a和模数互质】
能被整除的数
NIM游戏
移棋子游戏
模运算规则