BLOG

Josh's Blog

各种数据范围下的算法选择

发布于 # 算法与数据结构
数据范围时间复杂度算法
n30n\le30O(2n)O(2^n)DFS+剪枝,状态压缩 DP
n100n\le100O(n3)O(n^3)DP,Floyd,高斯消元
n1000n\le1000O(n2)O(n^2), O(n2logn)O(n^2logn)DP,二分,朴素版 Dijkstra、朴素版 Prim、Bellman-Ford
n104n\le10^4O(nn)O(n*\sqrt{n})块状链表、分块、莫队
n105n\le10^5O(nlogn)O(nlogn)Sort、线段树、树状数组、Set、Map、Heap、拓扑排序、Dijkstra+Heap、Prim+Heap、Kruskal、SPFA、求凸包、求半平面交、二分、CDQ 分治、整体二分、后缀数组、树链剖分、动态树
n106n\le10^6常数较小的O(nlogn)O(nlogn)单调队列、Hash、双指针扫描、并查集、KMP、AC 自动机、Sort、树状数组、Heap、Dijkstra、SPFA
n107n\le10^7(n)(n)双指针扫描、KMP、AC自动机、线性筛素数
n109n\le10^9O(n)O(\sqrt{n})判断质数
n1018n\le10^{18}O(logn)O(logn)最大公约数、快速幂、数位 DP
n101000n\le10^{1000}O(logn)2O(logn)^2高精度加减乘除
n10100000n\le10^{100000}O(logk×loglogk)O(logk\times loglogk)k 表示数位、高精度加减、FFT/NTT