算法备忘录·时空复杂度分析
本文最后更新于 2024年5月15日 凌晨
一直以来,没能系统学习算法,是我心中的痛;现在学了 y 总的算法基础课,做做笔记,希望能够有所收获。
这是第八节,时空复杂度分析。
时空复杂度分析
- 一般 ACM 或者笔试题的时间限制是 1 秒或 2 秒。在这种情况下,C++ 代码中的操作次数控制在 为最佳。
在不同数据范围下,代码的时间复杂度和算法的选择
-
,指数级别
- dfs + 剪枝
- 状态压缩 DP
-
,
- floyd
- DP
-
,、
- DP
- 二分
- 朴素版 Dijkstra
- 朴素版 Prim
- Bellman-Ford
-
,
- 块状链表
- 分块
- 莫队
-
,
- 各种sort
- 线段树
- 树状数组
- set/map
- heap
- 拓扑排序
- dijkstra+heap
- prim+heap
- Kruskal
- spfa
- 求凸包
- 求半平面交
- 二分
- CDQ分治
- 整体二分
- 后缀数组
- 树链剖分
- 动态树
-
,、常数比较小的
- 单调队列
- hash
- 双指针扫描
- 并查集
- kmp
- AC自动机
- 【常数比较小的 的做法】sort、树状数组、heap、dijkstra、spfa
-
,
- 双指针扫描
- kmp
- AC 自动机
- 线性筛素数
-
,
- 判断素数
-
,
- 最大公约数
- 快速幂
- 数位 DP
-
,
- 高精度加减乘除
-
,, 表示位数
- 高精度加减
- FFT/NTT
求时间复杂度
- 循环
- 递归:主定理(并不实用)
- 动态规划:状态数量 * 状态转移的计算量
- 小技巧
- 自然数的倒数和的增长速度是
- 质数的倒数和的增长速度是
求空间复杂度
64MB
至多开 1600 万个int
算法备忘录系列目录:
第一节 算法备忘录·基础算法
第二节 算法备忘录·数据结构
第三节 算法备忘录·杂项
第四节 算法备忘录·搜索与图论
第五节 算法备忘录·数学知识
第六节 算法备忘录·动态规划
第七节 算法备忘录·贪心
第八节 算法备忘录·时空复杂度分析
第九节 算法备忘录·杂项
算法备忘录·时空复杂度分析
https://justloseit.top/算法备忘录·时空复杂度分析/