空间也要算

10 分钟

时间会超限,内存也会。一个 int 占 字节,所以一千万()个 int 大约 字节 MB。题目常给 MB 限制,据此换算,能开的 int 数组大约在 量级。回到卡片: 的 int 二维数组是 个 int,约 MB,远超限制,开不了(会 MLE)。

int a[10000][10000];   // 1e8 个 int ≈ 400MB,MLE!
int b[3000][3000];     // 9e6 个 int ≈ 36MB,可以

几个要点:大数组要开成全局变量(放静态区),别放在函数里当局部变量——局部大数组在栈上,几 MB 就爆栈了。估算口诀: 个 int MB。若确实需要超大空间,就想办法压维(如背包的一维滚动)、只存稀疏部分(邻接表代替矩阵)、或用 short/bool 减小单元。坑:bool 数组一个占 字节、不是 位,别以为很省。

小纸条

能开一个 10000×10000 的整数二维数组吗?

登录 后可看答案

空间也要算 · 考级冲刺 · op599 课程