以下给出OI学习过程中各种算法常见的一些题型,供复习时参考。(会持续更新)
按重要度、难度和常见程度排序(我眼中的),并给出几道参考训练题。
PS:有一小部分是自己想出来的题型,暂未在网上找到相关题目(将会标注用【*】出来)。
一、生成树相关问题:
- 最小生成树
- 最小生成树唯一性判定
- 含给定边的最小生成树
- 最小瓶颈生成树(最小瓶颈路)
- 次小生成树【LOJ10068】【BZOJ1977】
- 最短路径生成树【LOJ10064】
- 增量最小生成树
- 最小生成树计数【BZOJ1016】
- 最小差值生成树【洛谷P4234】
- 曼哈顿距离最小生成树
二、连续子段和相关问题:
- 最大子段和
- 长度不小于L的最大子段和
- 长度大小于L的最大子段和(方法和上一种并不一样)
- 【*】长度在[L,R]之间的最大子段和
- 最大子矩阵和
- 最大m子段和
- 最大k矩阵【LOJ2150】
- 均值最大的子段【POJ2018】
- 动态最大子段和(值会被动态地修改)【洛谷P4513】
- 区间最大子段和(每个查询给定l与r,回答[l,r]中的最大子段和)【洛谷P4513】
- 【*】删去原序列中的任意一段连续序列,使得剩余两段拼接起来后,最大子段和最大。
三、最短路相关问题:
- 单源最短路问题
- 多源单点最短路问题(将边反向求解最短路即可)
- 最短路计数问题(分为可经过重复的点与不可重复经过两种)
- 次短路问题(分为严格次短与不严格次短两种)
- 经过定点的最短路问题
- 经过恰好k个点的最短路问题
- 01BFS
- 最小环问题(Dijkstra算法与Floyed算法)
- 判断是否存在负环(正环)
- 双调最短路问题
- 【*】点与边均有权的最短路问题
- 有向无环图(DAG)上的最短路问题
- Floyed传递闭包