分享

CSP和NOIP中最常见的爆零问题——文件输入输出

 长沙7喜 2021-10-14

前两年也做过好几个直播课,讲了这个问题,但是还是很多孩子和家长没有太重视,感觉还是文字更方便保存,再强调一下。

信息学比赛大家知道就是用计算机写代码来解决问题,比赛是在限定的时间内完成要求的题目,评判题目是否正确,得分多少,选手最后知道自己的成绩。而这个评判方式经过了很多次变化。

学校语数英的考试,最常用的就是老师判卷,信息学最早也是类似的。

我在高中1993年和1994年参加的两年省赛,判卷的方式也不一样。

第一年是比赛结束后,由判卷老师看每个选手的代码,给出成绩,所以老师会看思路,类似数学考试给过程分。选手们并不参与判卷,只是最终看到成绩。

第二年在比赛结束后,每个选手排队,判卷老师会到每个选手的机器上,运行程序,输入固定的几个测试点,比较标准答案和选手程序的结果,如果正确就给相应的分。选手能够看到评测的全过程。

相对来说,第二种方式没有主观因素,对每个人更公平,但是也有一个问题,就是运行每个选手的程序和输入测试点都是手工的,时间很长,容易出错,特别是现在的程序越来越复杂,输入和输出都很大,不可能再用手工输入和用眼睛来对比了。

因此现在的评测都是机器自动进行,但是因为比赛情况的不同,还是分成了不同的赛制,可以参考之前文章里的详细的介绍。

我所知道的计算机竞赛26——信息学比赛常用赛制

CSP/NOIP使用的赛制本质上是“高考赛制”,大家一起交卷,最后交给CCF一起判分。各地组织者只需要收集好选手的程序及时发给CCF,不需要网络等各种复杂的设置。因此组织全国大规模的比赛,这种赛制是目前最优的方式。

这种赛制简单来说就是要求选手把程序结果放到文件里,机器自动和正确结果进行比较,如果正确就给相应的分,最终得到成绩。选手平时练习并不会用这种方式,比赛时必须按照要求在代码里写重定向的语句。但是考试中没有反馈,只有考试结束之后才进行评测。

从选手的角度来看这种方式不稳定性极高,经常会出现爆零的情况,而一旦爆零,这一年的机会就没有了。所以对选手特别是新手来说,一定在考试之前反复练习,确保不出现低级出错。

最简单的方法,就是在int main()的主函数里,在最开始写上两句话:

freopen(“xxxx.in”,“r”,stdin);        

freopen(“xxxx.out”,“w”,stdout);    

其中xxxx是这道题的文件名,比赛中每道题目的描述里都会写。

同时头文件需要有

#include <cstdio>

这样写的作用就是把从屏幕输入输出变成了文件输入输出,方便机器统一测评,虽然是简单的两句话,但是初学者会遇到各种各样的问题,稍有不慎就爆零。

所以我们一直也在想各种办法让孩子们在比赛前好好练习,做到比赛的时候万无一失,前几年我们尝试了很多方式:在课堂上让孩子们跟着老师练;上课的时候使用这种赛制进行比赛;在比赛前开避坑的公开课反复强调重要性等。

今年,我们又让开发的小伙伴们做了一套模拟系统,选手们可以在网上练习,完全还原CSP/NOIP中文件输入输出方式,评测环境和官方最新的NOI2.0版本完全一致,希望让选手们提前发现问题。

我们前几年组织的智慧杯,爆零原因有80%都是因为文件输入输出错误。而且申述的环节中,大部分也都是对这个输入输出重定向不了解。

因此根据这些情况,在视频里复现了出来,希望给更多的选手提醒:

👇👇👇


文件输入输出中常见错误:

  • 没有使用<cstdio>头文件

  • 没有使用文件输入输出

  • 输入输出文件名错误

  • 文件输入输出位置写错

  • 文件输入输出语句英文括号全部写成了中文括号

  • 函数名freopen写错

  • 输入输出文件名读写模式错误

  • 选手在xxx.in和xxx.out的前面都加上了.\\,unix环境下评测编译错误

  • 调试中文件输入输出注释了,忘记取消注释

  • 强烈建议文件输入输出重定向用freopen()

在正式比赛前,大家记得一定要练习熟悉一下,千万不要在比赛中留下遗憾!具体方法如下:

CSP-J/S真题模拟系统进入路径

👇👇👇

1.登录有道小图灵官网-赛事专区:https://oj.youdao.com/contests


Image

2.进入真题模拟专区,状态栏点击【已结束】,进行回顾练习。

Image

3.开始练习,输入代码后,点击“提交并测试”,反复练习测评

Image

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多