调试注意事项

写程序检查

多测要清空!

如果怀疑是程序在某条分支出现错误,尝试在分支处输出不可能的答案,然后fc样例输出,看看这一答案对应的原样例输出和输入,说不定能发现什么猫腻。

我们离散化的时候不是会用到unique吗?他的格式是这样的unique(start,end,compare),其中compare参数是代替==的比较函数,可选择不写。返回值是去重后的end

调试过程:分步调试,优先确定前面部分是否正确;输出中间值,善用assertcerr

提交前检查

空间开没开够,开没开多,会不会MLE?

跑一遍手生成的大样例看看会不会TLE?

检查有没有编译器的逆天错误,例如非void函数没有return 或者 函数没有声明返回值类型

检查freopen

提交后检查

如果在本地和OJ评测结果不一样,可能是因为:

  • 有未定义行为:加入-Wall -fsanitize=leak,undefined,address编译选项;检查函数有没有返回值,有没有地址溢出,有没有变量未初始化
  • 栈空间不足:本地栈空间不足,可以使用-Wl,--stack=536870912命令开出 \(512\) MB空间(后面的数字是字节数)。
  • 评测机环境与本地不同:尤其注意windows环境下的换行字符有\r,而linux环境下没有
posted @ 2024-10-31 20:43  Luke_li  阅读(4)  评论(0编辑  收藏  举报