一句话理解
MLE 表示程序用的内存超过题目限制。
为什么要学
大数组、开太大的 DP 表、递归太深,都可能超内存。
讲解
MLE = Memory Limit Exceeded。常见限制是 256MB 或 512MB。
粗算:一个 int 4 字节,一百万个 int 大约 4MB。int a[5000][5000] 大约 100MB。
vector 也会占内存,而且可能比裸数组稍多一点。不要“先开一个超大保险数组”。
例子
int a[10000][10000]; // 约 400MB,很多题会 MLE
10000×10000 个 int,每个 4 字节,大约 4e8 字节,约 381MB,再加别的就更容易爆。
常见错误
- 按最大 n 开二维数组,却忘了乘一下字节数。
- 递归层数过多导致栈内存爆掉,有的环境报 RE 而不是 MLE。