CSP-J/S 6 个常见问题导致分数暴零
作者: | 更新日期:
跑评测程序时,简单看了下考试的代码,发现 6 个常见且易忽视的失分/暴零问题,并给出规避建议。
本文首发于公众号:天空的代码世界,微信号:tiankonguse
零、背景
之前我写了一个评测程序来预估 CSP-J/S 2025 年的一等奖分数线。
相关文章记录在 《算法评测》、《代码评测》、《评测复盘》里。
在跑评测的过程中,偶尔会出现 0 分的提交。
为排除是评测程序自身的问题,我会对这类提交进行抽样复查。
结果发现:绝大多数 0 分代码,都是一些常见且可避免的问题引起的。
因此写下这篇文章,总结这些共性问题,并补充规避建议,供参考。
PS:评测程序的源码已上传到网盘,有需要的朋友可以关注公众号,回复 CSP-2025 获取。
一、爆内存
问题:数组开得过大,超过 512M,导致运行时内存超限(MLE)。
case:HA-J00423 预测 400 分,实际 300 分,polygon 暴零,错失第一名,十分可惜。

如何避免:
- 优先使用按需开辟、滚动数组、压缩状态或离散化,避免盲目开大数组。
- 明确平台/题面给出的内存限制;评估峰值内存(数组元素数 × 单元素字节数)。
- 将少量需要大内存的局部数据改为静态/全局,或拆分阶段计算。
二、漏传代码
问题:提交时漏传代码文件或传错文件,导致暴零。
case:HA-J00664,漏传代码,得分 280;从实力看,至少能拿 350 分。

如何避免 :提交前做一次“提交清单核对”:题号-文件名-输入输出方式。
三、函数返回值问题
问题:函数声明了返回值,但末尾未 return 实际值,运行时产生未定义行为或 WA。
case:HA-S00524,预期最后一题能拿到暴力分,总分应为 138;由于函数未返回值,最终只得 96 分。

河南省的一等线是 100 分,本来可以拿一等,结果错失,十分可惜。

四、数组下标越界
问题:定义数组大小为 N,却从 1 遍历到 N(含 N),或二维数组行列(左右/上下)下标写反,导致越界。
case:HA-S00072,少了 36 分。

如何避免
- 明确索引约定:0-based 还是 1-based;混用时统一在读入后转换。
- 边界统一写成半开区间
[l, r);循环使用<而不是<=。 - 二维数组先行后列(
a[row][col])写法固定;封装访问函数减少手写下标。
五、没有输出到文件
问题:调试时临时把输出改成了标准输出,提交时忘记改回文件输出,导致评测读不到结果而暴零。
正如《评测复盘》中提到,我在评测程序里对“未将输出写入文件”的情况做了兼容处理,以避免刷屏;
在实际评测中,有不少考生忽略了题目要求的文件输出。
如何避免
- 用统一的 I/O 封装:例如通过宏在“本地调试/正式评测”之间切换
freopen。 - 在提交清单中加入“输入/输出来源核对”。
- 最后一次本地运行使用与题面一致的文件 I/O 验证产出文件。
六、保存时误输入字母
问题:按快捷键 Ctrl+S/Command+S 保存时,不慎在文件末尾多输入一个字母(如 s),导致编译错误,暴零。
这是一个非常低级但并不罕见的失误。
评测时发现部分考生编译错误,打开代码一看,文件末尾多了一个无意义的字符。
如何避免:开启编辑器的保存前语法检查/自动格式化;提交前强制编译一次。
七、小结
以上 6 个问题,是我在跑 CSP-J/S 2025 评测程序时看到的最常见的“暴零或严重失分”的原因。
希望大家在今后的比赛中有针对性地自检,提前规避这些坑。
我也会继续跑评测程序,对比与实际分数的偏差;
若发现新的共性问题,会继续更新文章。
《完》
-EOF-
本文公众号:天空的代码世界
个人微信号:tiankonguse
公众号 ID:tiankonguse-code
本文首发于公众号:天空的代码世界,微信号:tiankonguse
如果你想留言,可以在微信里面关注公众号进行留言。
