版权声明:本页面的全部内容在 CC BY-SA 4.0 之条款下提供,附加条款亦可能应用 https://blog.csdn.net/qq_18946671/article/details/83537120
一些 NOIP 常用算法的时间复杂度
文章目录
参考资料:算法进阶指南第2版(刚才上网查了一下,https://www.zhihu.com/question/40990125 ,好像不会有版权问题,如果有版权问题,可以评论里说一下,如果我看到会尽快处理)
图论算法
设
搜索
用邻接表存图:
算法 | 时间复杂度 |
---|---|
DFS、BFS |
用邻接矩阵存图:
算法 | 时间复杂度 |
---|---|
DFS、BFS |
最短路
单源最短路径
要求所有边的长度为非负数
算法 | 时间复杂度 |
---|---|
Dijkstra 算法 | |
堆优化的 Dijkstra 算法 |
适用于所有有向图
算法 | 时间复杂度 |
---|---|
Bellman-Ford | |
SPFA | 最坏 ,但大多数情况下很快 |
任意两点间最短路
算法 | 时间复杂度 |
---|---|
Folyd 算法 |
树相关
最小生成树
算法 | 时间复杂度 |
---|---|
Kruskal 算法 | |
Prim 算法 | |
堆优化的 Prim 算法 |
LCA
算法 | 时间复杂度 |
---|---|
倍增 | 初始化: ,查询: |
基于 ST 表的算法 | 初始化: ,查询: |
DP
背包问题
01背包问题
其它:待填坑
数据结构
并查集
设最开始有
个集合。
路径压缩优化后:
操作 | 时间复杂度 |
---|---|
合并两个集合 | |
查询元素所在集合 |
树状数组
设原数组有
个元素。
单点修改、区间求和:
操作 | 时间复杂度 |
---|---|
单点修改 | |
区间求和 |
区间加减、单点查询(将原数组的差分数组进行单点修改、区间求和操作):
操作 | 时间复杂度 |
---|---|
区间加减 | |
单点查询 |
线段树
线段树常数比较大。
操作 | 时间复杂度 |
---|---|
单点修改 | |
区间求和、求最值 | |
区间加减 | |
单点查询 |
ST表
初始化:
区间求最值: