为了防止你在正式的比赛中爆零,还是来读一下比赛时的注意事项吧。


笔者注

请注意,本文阐述的一些注意事项较为基础,主要面向初次参赛或代码能力较低的选手。

本文原本是写给笔者带的小朋友的,但写完后意识到,仍然有相当多的初次参赛的选手会在比赛中遇到同样的问题,于是稍作修改,并在此公开。

以及,你也可以前往我的个人博客阅读,以获得更佳的体验。

  • 赛前需要做的准备

身份证准考证承诺书(部分省份),这三个是最重要的!一定要反复检查这三项。如果你入门组和提高组的比赛都参加,那么承诺书要打印两份,入门组和提高组各一份。

另外,入门组比赛有 3.5 小时,提高组比赛有 4 小时(接下来的 NOIP 有 4.5 小时),长时间的脑力劳动可能会让你很饿。因此我建议你带几块士力架,足够高效也足够扛饿。最好再带瓶水,比较齁嗓子。

除此之外,也建议你带一两根笔,以及几张草稿纸,比赛中可能会有需要打草稿的时候。

另外,为了给意外情况留一些时间冗余,请确保你最晚在比赛开始前半小时到达考场,即入门组的早上 8:00 和提高组的下午 14:00。

  • 到达考场的第一件事

上机时第一件事是检查鼠标键盘是否正常,电脑是否有故障,并且核对电脑里的时间。如果时间不正确,你可以打开电脑的设置调整时间。

点击左下角的“Show Applications”(显示程序),找到“Settings”(设置),左键打开。

在左侧找到“Date & Time”(日期与时间),然后在右侧修改时间。

当你打开电脑时,桌面上会有一个名字叫 noi 的文件夹,我们称它为主文件夹。

双击左键打开主文件夹,里边会一个文件夹和一个 PDF 文件,分别对应本场比赛供你调试代码用的样例文件和题面。为了避免什么意外,你最好把这个存放样例文件的文件夹复制一份用于备份。你需要左键单击这个文件夹来选中它,然后在它上面点右键,选择“Copy”(复制),这样你就成功复制了这个文件夹。

接下来随便找一个你喜欢的位置,然后在空白处右键,选择“Paste”(粘贴)来粘贴。

另外,如果比赛前(或者比赛期间)发现设备问题,及时向监考员报告,不要尝试自己解决。发生任何问题时,第一时间向监考员示意。

  • 建立正确的选手文件夹

你需要打开主文件夹,然后在空白处右键,选择“New Folder”(新文件夹)来建立一个文件夹,并将其命名为你的准考证号,其他什么东西都不要加。我们接下来称这个文件夹为选手文件夹。例如,如果你的准考证号是 NM-S00123,你的选手文件夹应该是这样的:

接下来,你需要打开选手文件夹,然后给每道题目都建立一个文件夹,并命名为这道题目的英文名。每道题目的英文名会在题面中给出。例如,如果这场比赛的四道题目的英文名分别为 dictphonenoisezuma,那么你的选手文件夹里边应该是这样的:

你的题目文件夹中必须包含 xxx.cpp 命名的代码文件,xxx 是这道题的英文名。最终,你的选手文件夹结构应该是这样的:

这个图仅用于示意文件夹结构,实际比赛中不会出现这样的页面。

  • 文件读写

在 NOI 系列赛事(包括我们即将参加的 CSP-J/S 复赛和 NOIP)的所有机试中,你都需要使用文件输入输出。具体地说,你需要在主函数开头添加这两句:

freopen("xxx.in", "r", stdin);
freopen("xxx.out", "w", stdout);

加上这两句后,你的代码将不会再从终端(就是运行代码之后弹出来的大黑框子)输入输出,而是会从文件 xxx.in 读入,输出到文件 xxx.out如果忘记加这两行代码,将导致本题零分

也就是说,你的主函数应该是形如这样的:

int main() {
    freopen("xxx.in", "r", stdin);
    freopen("xxx.out", "w", stdout);
    
    // 你的主函数内容
    
    return 0;
}

请注意,上面写的 xxx 应该在比赛中替换成对应的题目英文名,每道题的英文名都不一样。

  • 多打暴力

比赛中将会设置很多的部分分。如果你不会做这道题的满分解法,请务必尝试拿到这题的一部分得分。

或者换句话说,你不需要一定想到足以通过这个数据范围的做法,能想到什么做法就写什么就好了。当然,有些题目会有一些特殊性质,你也可以根据这些特殊性质写出对应的做法,这样也可以得到一部分的分数。

数据范围和特殊性质(如果有的话)都会在题目末尾的“数据范围”处给出,形如这样:

提高组的题目难度对于像我们这样的基础选手非常不友好,有时候完整地通过一道题是很困难的,我们必须靠大量的“一部分的分数”来凑得分。

  • 代码中的注意事项

在写 freopen 里的题目名,或是遇到题目要求你输出一个长字符串时,你最好直接复制,避免写错。

不要用 j0j1jny0y1yn 做变量名!这可能会直接导致你过不了编译

  • 比赛结束前的最后一件事

比赛结束前,你需要留五分钟时间出来做一些检查。

  1. 确认一下选手文件夹的结构是否正确。
  2. 再跑一遍所有的样例(或者你写了的部分分对应的样例),看看结果还有没有问题。
  3. 确认一下 freopen 中的文件名有没有删掉调试用的数字,最终的输入文件一定是 xxx.in,输出文件一定是 xxx.out
  4. 最后再编译一次,确保代码能通过编译。接下来就别动代码了

祝各位都能打出满意的成绩!

我知道这些内容可能对大多数人来说足够基础,但仍然有相当多的选手面临着初次参赛的迷茫。每个人都会经历入门的阶段,不了解某些事情并不是他们的错,这也并不能成为评价一个人的标准。因此,请各位不要在本文的评论区下恶语相向,或是发表嘲讽类的言论。

希望这篇文章可以帮到你。另外,都读到这里了不如到洛谷点个赞再走吧,说不定就能帮到更多的人。

最后修改:2025 年 10 月 31 日
如果觉得我的文章对你有用,请随意赞赏