常见复杂度对照

10 分钟

记住这张“数据规模 → 允许复杂度”的对照表,拿到题一眼就能反推该用什么算法(按一秒 估):

  • ,可以爆搜、状压;
  • ,三层循环、Floyd;
  • ,两层循环、朴素 DP;
  • ,排序、二分、堆;
  • 甚至更大:,线性扫描、前缀和。

反过来用更好使:看到 就知道可以放心写 ;看到 就知道两层循环必死,得想线性做法。

// n = 10^6, 只能线性
long long sum = 0;
for (int i = 0; i < n; i++) sum += a[i];   // O(n)

坑:这只是数量级参考,常数大小、多组数据、时限松紧都会影响结果。 里的 一般当作 左右来估。

小纸条

把这张对照表抄下来。

登录 后可看答案

常见复杂度对照 · 考级冲刺 · op599 课程