Acwing《算法基础课》第7章 时空复杂度分析
一般ACM或者笔试题的时间限制是1秒或2秒
C++
一般1s能计算107~108次,在这种情况下,C++
代码中的操作次数控制在 107为最佳
在不同数据范围下,代码的时间复杂度和算法的选择技巧如下:
- n≤30,指数级别
- dfs+剪枝
- 状态压缩dp
- n≤100,O(n3)
- floyd
- dp
- n≤1000,O(n2),O(n2logn)
- dp
- 二分
- 朴素版Dijkstra
- 朴素版Prim
- Bellman-Ford
- n≤10000,O(n√n)
- 块状链表
- 分块
- 莫队
- n≤105,O(nlogn)
- 各种排序算法
- 线段树
- 树状数组
- set/map
- heap
- 拓扑排序
- 堆优化Dijkstra
- 堆优化Prim
- SPFA
- 求凸包
- 求半平面交
- 二分
- n≤106
- O(n)
- Hash
- 双指针扫描
- 并查集
- KMP
- AC自动机
- 常数较小的O(nlogn)
- 排序
- 树状数组
- heap
- Dijkstra
- SPFA <
- O(n)