防爆零指南
Falling_Finch · · 算法·理论
编写代码
-
文件路径使用正斜杠 “/”
Linux 系统使用正斜杠 “/” 作为路径分隔符,而不是 Windows 中的反斜杠 “\”。如果你使用了万能头文件或其他扩展库,注意不要写错。例如,bits/stdc++.h 不要误写成 bits\stdc++.h。
-
避免使用系统保留名称作为变量名
Linux 下的 g++ 库中会使用一些特定名称(如 kill、hash 等),如果你的程序中也使用了这些名称,可能导致变量名或函数名冲突。由于这类名称没有固定规律,靠“黑名单”记忆难度较大。
一个简单有效的方法:将所有变量名的首字母大写。 虽然写起来稍显别扭,但能有效避免冲突。当然,像 i、j、k 这类常用循环变量肯定是没有问题。
另外,如果你平时训练的 OJ 系统像 xmoj 一样符合 NOI Linux 环境要求,那么日常使用的变量名基本可以沿用,只需对不确定的变量做首字母大写处理即可。
-
注意 C++ 标准版本
g++ 9.3.0 虽然可以通过编译选项支持 C++17,但实际评测时使用的是 C++14。建议同学们不要过度追求新版本的语法便利,日常训练中尽量使用比赛规定的标准版本。
-
局部变量不会自动初始化
这一点非常关键:在 NOI Linux 系统中,局部变量不会自动初始化为 0。务必记得对局部变量进行手动初始化。虽然这不是编译问题,但确实是一个可能导致“爆零”的严重错误。
-
有返回值的函数必须全覆盖 return
自定义函数在所有执行路径上都必须有 return 语句,否则可能引发运行时错误。
(我去年因为这个炸过来着)
存储文件
-
Windows 默认会隐藏已知文件扩展名,如果没看到 .cpp 后缀,切勿手动添加,否则可能出现 chain.cpp.cpp 这样的错误命名,导致该题零分。正确做法是:用 Dev-C++ 打开文件,将鼠标悬停在文件名标签上,查看完整路径中是否已包含 .cpp。
-
建议不要将代码文件夹放在 C 盘或桌面。部分考场电脑配备自动还原系统,如遇断电或重启,C 盘数据可能丢失。