总结了竞赛中常见的错误类型和高效的调试方法,帮你少踩坑。
一、常见编译/运行错误
int main()写成void main()— 编译错误- 忘记
#include— 编译错误 - 数组开小了 — 运行时 RE(段错误)
- 递归太深没开栈 — 段错误
- 除以 0 — RE
二、常见逻辑错误
- 变量未初始化(局部变量在竞赛环境中初始值不确定)
- 循环边界写错(i <= n 写成 i < n)
- 数据类型溢出(int 存不下要用 long long)
- 运算符优先级(& ^ | 优先级低于 == !=)
- 多测不清空(数据结构和全局变量清空)
- 记忆化搜索未判 vis
三、调试技巧
- 输出调试
cerr << "debug: " << x << endl; // 输出到 stderr
- assert 断言
assert(1 <= x && x <= n); // 条件不满足时程序崩溃
- 对拍(最重要!)
- 小数据测试
四、考试 Checklist
- [ ] freopen 写对了吗?
- [ ] 文件名大小写对吗?
- [ ] 数组大小够吗(是否超过内存限制)?
- [ ] 要不要开 long long?
- [ ] 读入输出够快吗?
- [ ] 测试样例通过了吗?
- [ ] 多组数据清空了吗?
五、常见"玄学错误"
- 快读不能和 scanf/cin 混用
#define int long long可能 MLE- memset 只能赋值 0 或 -1(按字节赋值)
- 浮点数不能用 == 比较
暂无评论,快来抢沙发吧~ 🛋️