女孩和机器人一起思考

一起动脑筋 · 先看一个小故事

机器人准备对十万个数逐对比较。女孩先算次数,发现可能接近百亿次。

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 规模n = 100000
  2. 两层完整遍历n 乘 n
  3. 次数10000000000
  4. 决策考虑减少工作

先估算关键操作次数,再结合实际环境测试。

平方增长会让大输入变得难处理,即使单次操作很快也不够。

01什么叫 TLE?

TLE(Time Limit Exceeded)表示程序超过题目允许的运行时间。

程序可能答案逻辑正确,只是太慢。

02第一步:看最大数据范围

例如:

n ≤ 200000

复杂度要用最大 n 来估算,而不是样例里的小 n。

03第二步:估算算法复杂度

O(n)

约 2×10⁵ 级工作。

O(n log n)

通常仍很常见。

O(n²)

约 4×10¹⁰ 级,通常危险。

O(2ⁿ)

n 稍大就迅速爆炸。

04能不能用“1 秒 = 1 亿次运算”死算?

不能把它当精确规则。

05那复杂度估算还有用吗?

非常有用。它先帮助排除明显不可能的方案。

例如 n=200000 时 O(n²) 达到数百亿量级,即使不精确计时,也已经足够判断风险极高。

06除了时间还要看什么?

还要考虑空间。

例如建立一个 n×n 的 int 矩阵,当 n 很大时可能先 MLE(内存超限)。

07递归会不会影响?

会。算法总时间可能没问题,但递归深度太大仍可能导致调用栈耗尽。

08怎样形成竞赛里的估算习惯?

最大数据规模复杂度数量级再考虑常数和实现

你已经知道了什么

  • TLE 表示程序超过时间限制。
  • 估算必须看最大数据规模。
  • 复杂度是判断可行性的第一层工具。
  • “每秒多少次运算”只能粗略参考,不能当固定公式。
  • 还要考虑空间、I/O 和递归深度。

下一篇:从题目到 AC:完整解决一道信奥题

轮到你来试一试

n 从 1000 变成 10000,n² 增长几倍?

想好了吗?点开看解释

100 倍,因为输入扩大 10 倍,平方工作量扩大 10 × 10 倍。