时间复杂度
在一般情况下,C/C++的时间限制为1秒:
数据范围判断时间复杂度:
O(n)的算法能解决的数据范围在 n<108
O(nlogn)的算法能解决的数据范围在 n<106
O(n)的算法能解决的数据范围在 n<105
O(n2)的算法能解决的数据范围在 n < 5000
O(n3)的算法能解决的数据范围在 n < 300
O(2n)的算法能解决的数据范围在 n < 25
O(n!)的算法能解决的数据范围在 n < 11
数据范围判断算法
1. => 指数级别, dfs+剪枝,状态压缩dp
2.n<100 => O(n),floyd,dp,高斯消元
3.n < 1000 =>O(n?),O(n²logn),dp,二分,朴素版Dikstra、朴素版Prim、Bellman-Ford
4.n< 10000 =>O(n),块状链表、分块、莫队
5.n< 100000 =>O(nlogn),各种sort,线段树、树状数组、setmap、heap、拓扑排序、dikstratheap、prim+heap、Kruskal、spfa、求凸包、求半平面交、二分、CDQ分治、整体二分、后缀数组、树链剖分、动态树
6.n < 1000000 => O(n),以及常数较小的 O(nlogn),单调队列、 hash、双指针扫描、并查集,kmp、AC自动机,常数比较小的 O(nlogn)的做法:sort、树状数组、heap、dijkstra、spfa
7.n < 10000000 =>O(n),双指针扫描、kmp、AC自动机、线性筛素数
8.n< 109 =>O(),判断质数
9.n< 1018 =>O(logn),最大公约数,快速幂,数位DP
10.n< 101000 =>O((logn)2),高精度加减乘除
11.n< 10100000 => O(logk xloglogk),k表示位数,高精度加减、FFT/NTT