常见复杂度对照
约 10 分钟
记住这张“数据规模 → 允许复杂度”的对照表,拿到题一眼就能反推该用什么算法(按一秒 估):
- : 或 ,可以爆搜、状压;
- :,三层循环、Floyd;
- :,两层循环、朴素 DP;
- :,排序、二分、堆;
- 甚至更大: 或 ,线性扫描、前缀和。
反过来用更好使:看到 就知道可以放心写 ;看到 就知道两层循环必死,得想线性做法。
// n = 10^6, 只能线性
long long sum = 0;
for (int i = 0; i < n; i++) sum += a[i]; // O(n)
坑:这只是数量级参考,常数大小、多组数据、时限松紧都会影响结果。 里的 一般当作 左右来估。
小纸条
把这张对照表抄下来。
登录 后可看答案