語法書 / AA 競程語法書 上冊 / 附錄 / E. 時間 vs 記憶體估計速查表

E. 時間 vs 記憶體估計速查表

E-1. 時間複雜度估計表

N 的範圍 O(1) O(log N) O(N) O(N log N) O(N²) O(N³) O(2^N)
10
10² (100)
10³ (1,000)
10⁴ (10,000)
10⁵ (100,000)
10⁶ (1,000,000)
10⁷ (10,000,000)
10⁸ (100,000,000)
10⁹ (1,000,000,000)

說明:

  • ✓ = 一般情況下能在 1 秒內完成
  • △ = 臨界(邊界情況,通常需要 I/O 優化)
  • ✗ = 會超時 (TLE)

時間限制通常為 1~2 秒;現代 CPU 約可執行 10^8~10^9 次簡單操作。

E-2. 記憶體複雜度估計表

陣列大小 int 型 (4 bytes) long long 型 (8 bytes) 備註
10⁴ 40 KB 80 KB 幾乎無壓力
10⁵ 400 KB 800 KB 無壓力
10⁶ 4 MB 8 MB 無壓力
2 × 10⁶ 8 MB 16 MB 無壓力
10⁷ 40 MB 80 MB 接近限制
2 × 10⁷ 80 MB 160 MB 超過 128 MB 限制,風險

記憶體限制通常為 256 MB 或 128 MB;全域陣列比函式內陣列安全(且不會因遞迴而爆棧)。

E-3. 常見演算法的時間複雜度

演算法 時間複雜度 適用範圍
遍歷陣列 O(N) 任何 N
排序(sort) O(N log N) N ≤ 10^6 (通常)
二分搜 O(log N) 任何 N
線性搜尋 O(N) 任何 N
巢狀迴圈遍歷 O(N²) N ≤ 10^4
DFS / BFS O(V + E) 圖論,V ≤ 10^5
動態規劃 視狀態數決定 狀態 ≤ 10^6