算法竞赛中时间复杂度、数据范围与时间限制的关系
有的时候我们在写题的时候总是写完了暴力算法或者其他的,然后提交则 T L E TLE TLE,这是因为我们并没有提前计算好时间复杂度,那可能你会觉得了计算时间复杂度有什么用呢?能知道自己能否通过这时间限制呢?本文就教你怎么判断?
首先,我们要知道,在竞赛中,一般认为计算机 1 1 1秒能执行 5 × 1 0 8 5×10^8 5×108次计算,如果题目给出的时间限制为 1 1 1秒,那么选择的算法执行的计算次数最多应该在 1 0 8 10^8 108量级才有可能解决这个题目。
由此,我们则可以得出在一般情况下,时间限制为 1 1 1秒,时间复杂度和数据范围对应如下:
O
(
n
)
O(n)
O(n)的算法能解决的数据范围在
n
≤
1
0
8
n≤10^8
n≤108
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)的算法能解决的数据范围在
n
≤
1
0
6
n≤10^6
n≤106
O
(
n
n
)
O(n\sqrt n)
O(nn)的算法能解决的数据范围在
n
≤
1
0
5
n≤10^5
n≤105
O
(
n
2
)
O(n^2)
O(n2)的算法能解决的数据范围在
n
≤
5000
n≤5000
n≤5000
O
(
n
3
)
O(n^3)
O(n3)的算法能解决的数据范围在
n
≤
300
n≤300
n≤300
O
(
2
n
)
O(2^n)
O(2n)的算法能解决的数据范围在
n
≤
25
n≤25
n≤25
O
(
n
!
)
O(n!)
O(n!)的算法能解决的数据范围在
n
≤
11
n≤11
n≤11
当然,这些仅供参考,在一般情况下基本可以得出结果。这样我们在设计算法的时候就可以考虑能不能通过了,不用做无用功甚至交一发 T L E TLE TLE。

浙公网安备 33010602011771号