文章目录
还有一两天就CSP了,特此为近期的复习进行总结。
时空复杂度分析
对于时空复杂度分析是算法竞赛中一个非常重要的环节,因为我们可以通过题目所给的时间限制去推导实现该题目所需要用的算法内容。
下面举几个例子:
当 n n n 是一个非常小常数时, 30 30 30 以下的 n n n 一般时间复杂度就是指数级别的,类似的算法有状压dp。
当 n ≤ k × 1 0 2 ( k ≤ 500 ) n\leq k\times 10^{2}(k\leq 500) n≤k×102(k≤500) 时,可能就是 Θ ( n 3 ) \Theta(n^3) Θ(n3) 的算法实现,例如一些dp和弗洛伊德算法。
当 n ≤ 1 0 3 o r 4 n\leq 10^{3\ or\ 4} n≤103 or 4 的时候,该算法的时间复杂度一般是 Θ ( n 2 ) \Theta(n^2) Θ(n2),例如dp和匈牙利算法(匈牙利算法虽然理论上应该是 Θ ( n 3 ) \Theta(n^3) Θ(n3) 但是实则却能跑出平方甚至更低的时间复杂度)等。
当 n ≤ 1 0 6 n\leq 10^6 n≤106 左右时一般都是 Θ ( n l o g n ) \Theta(n\ log\ n)