算法竞赛中时间复杂度、数据范围与时间限制的关系
有的时候我们在写题的时候总是写完了暴力算法或者其他的,然后提交则 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号
浙公网安备 33010602011771号