算法竞赛中时间复杂度、数据范围与时间限制的关系

有的时候我们在写题的时候总是写完了暴力算法或者其他的,然后提交则 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 n108
O ( n l o g n ) O(nlogn) O(nlogn)的算法能解决的数据范围在 n ≤ 1 0 6 n≤10^6 n106
O ( n n ) O(n\sqrt n) O(nn )的算法能解决的数据范围在 n ≤ 1 0 5 n≤10^5 n105
O ( n 2 ) O(n^2) O(n2)的算法能解决的数据范围在 n ≤ 5000 n≤5000 n5000
O ( n 3 ) O(n^3) O(n3)的算法能解决的数据范围在 n ≤ 300 n≤300 n300
O ( 2 n ) O(2^n) O(2n)的算法能解决的数据范围在 n ≤ 25 n≤25 n25
O ( n ! ) O(n!) O(n!)的算法能解决的数据范围在 n ≤ 11 n≤11 n11

当然,这些仅供参考,在一般情况下基本可以得出结果。这样我们在设计算法的时候就可以考虑能不能通过了,不用做无用功甚至交一发 T L E TLE TLE

posted @ 2022-03-26 16:49  unique_pursuit  阅读(256)  评论(0)    收藏  举报