复杂度与算法

\(n ≤ 30\): 指数级别, dfs+剪枝,状态压缩dp
\(n ≤ 100 => O(n³)\) : floyd,dp,高斯消元
\(n ≤ 1000 => O(n²),O(n²㏒n)\) : dp,二分,朴素版Dijkstra、朴素版Prim、Bellman-Ford
\(n ≤ 10⁴ => O(n * √n)\): 块状链表、分块、莫队
\(n ≤ 10⁵ => O(n㏒n)\): 各种sort,线段树、树状数组、set/map、heap、拓扑排序、dijkstra+heap、prim+heap、Kruskal、spfa、求凸包、求半平面交、二分、CDQ分治、整体二分、后缀数组、树链剖分、动态树
\(n ≤ 10⁶ => O(n)\) : 以及常数较小的 \(O(n㏒n)\) 算法 => 单调队列、 hash、双指针扫描、并查集,kmp、AC自动机,常数比较小的 \(O(n㏒n)\) 的做法:sort、树状数组、heap、dijkstra、spfa
\(n ≤ 10⁷ => O(n)\) : 双指针扫描、kmp、AC自动机、线性筛素数
\(n ≤ 10⁹ => O(√n)\) : 判断质数
\(n ≤ 10¹⁸ => O(logn)\) : 最大公约数,快速幂,数位DP
\(n ≤ 10¹⁰⁰⁰ => O((logn)²)\) : 高精度加减乘除
\(n ≤ 10¹⁰⁰⁰⁰⁰ => O(㏒k × ㏒㏒k)\) : k表示位数表示位数,高精度加减FFT/NTT

(——来自小林老师)

0 条评论

目前还没有评论...