一、比赛不提供纸质试题,只提供电子版试题文件。
该文件压缩包保存在计算机桌面上。监考人公布密码后,选手自行解密试题。
试题解压密码会影响一个人的心情,一定要一次输对,注意大小写,不要边输入边检查,要对自己有自信。
二、江苏复赛选手上机可自选windows或linux操作系统。
中国计算机学会将使用NOI linux下的Arbiter评测系统进行评测。
作为江苏赛点的技术支持(打杂的)之一,表示江苏提供NOI Linux虚拟机已经好几年了,不在NOI Linux中测试导致出现问题后果自负。而且这几年考务会上已明确通知所有教练要求学生训练时使用NOI Linux。(摘自网络)
Linux与Windows的区别
1、大小写敏感
a. 在Windows下,文件名大小写不敏感,例如A.PAS 与 a.pas 与 A.pas 与 a.PaS没有区别。
b. Linux视文件名为二进制数据,所以区分大小写。
c. 考试时一定要看清题目上要求,区别大小写。
2、关闭文件
a. Windows在程序退出时默认自动关闭已打开的文件,会把缓存中数据写入硬盘。
b. 在Linux下必须由程序关闭文件,否则没有被写入硬盘。
3、回车符与换行符
a. 在Windows下,两行文本间有回车符(ASCII 13) 和换行符 (ASCII 10)。
b. 而在Linux下,只有换行符 (ASCII 10)。
4、Read 与 Readln
a. 由于回车与换行在Windows和Linux下存在有区别,编程时要格外注意。
b. 尤其读字符串时,尽量采用Readln,而不要While not eof read或While not eofln read。
5、多余字符过滤
a. Arbiter评测系统有多个插件,分为整数比较(过滤无效字符)和逐字节比较。
b. 由于评测插件的原因,注意输出结果时,尽量不要有多余空格或换行。
c. 对于一个整数,使用write输出。
d. 对于多个整数,输出最后一个时不要有多余空格或换行。
e. 对于一个字符串,尽量使用write整体输出。
三、比赛时选手注意事项:
1、除经允许的、必须的竞赛用品外,选手不得将书包、手机、U盘、图书等带入考场,一经发现,取消本次竞赛资格或竞赛成绩为零分。
带好:准考证;身份证(或其它有照片的有效证件);笔;少量水。
禁止携带U 盘、MP3、计算器、手机等任何与存储、计算、通信有关的电子设备;禁止携带一切书籍和其他无关物品;一经发现按作弊处理。草稿纸考场会发,无需自己准备。
2、选手须将身份证和准考证正面向外放在考桌上参赛标签旁。选手应仔细核对考桌上参赛标签信息是否正确,如有错误须立刻上报监考人员,否则视为默认同意,赛后不得更改。如选手和准考证上标明的选手不一致,视为替考,替考者和被替考者竞赛成绩均为零分,并受三年之内不得参赛处罚。
3、开始15分钟后不得进人考场,以旷考处理;竞赛结束30分钟前,选手不得退出考场(上厕所除外)。
比赛提前30分钟进场,熟悉考场环境,找到自己座位及厕所位置,更改软件、系统为自己所喜欢的设置。在别人紧张、坐立不安的时候,你不妨把时间利用起来。依照惯例,考试前几分钟是可以先调试电脑的,所以这时候一定要做些准备:
a. 设置系统:取消桌面背景、更改屏幕分辨率、更改虚拟内存等。
b. 设置IDE:设置默认路径、窗口大小、TAB宽度、重启IDE等。
c. 准备文件:创建.in .out,创建模板,熟悉计算机,检查有误故障,写下重要且易错内容,如:快速排序(Qsort)、文件操作命令等。
4、竞赛期间利用各种方式向其他选手传递信息等违规行为,该选手将被立刻取消参赛资格,并从次年算起被禁赛3年。
5、选手听到监考人员竞赛结束的指令后,须停止答卷,待监考人员检查无误后离开考场。如竞赛结束的指令下达后继续答题,该选手成绩以零分记。
6、选手如发现监考人员及相关人员在竞赛过程中有违纪行为或有影响公平竞赛的行为,可向CCF署名投诉。
7、监考人公布密码后,选手自行解密试题,并在已有的目录下(已由竞赛组织方事先建立,目录名为选手的参赛编号),由选手为每道试题再单独建立一个子目录。
四、目录结构、文件名规则
比赛开始前,选手应仔细核对考桌上参赛标签信息是否正确。
竞赛组织方事先已在某盘根目录下建立以选手参赛编号命名的文件夹,选手应检查该文件夹名称是否正确(包括编号及大小写字母),如有错误须立即上报监考人员,由监考人员进行更改。确认无误后,选手须为每道试题再单独建立一个子文件夹,子文件夹名与对应的试题英文名相同(参见试题封面页)。选手提交的每道试题的源程序必须分别存放在相应的子文件夹下。在规定文件夹下,不得包含除有效答案(源程序)以外的任何文件和文件夹。未按规定检查、建立文件夹、建立的子文件夹名出现错误或提交的源程序没有存放在相应的子文件夹下等都可能导致选手成绩为0分,责任由选手承担。
例如:假设题目有cashier、dune、manhattan三题,选手JS-001分别使用C、Pascal、C++答题,其最终提交的文件为cashier.c、dune.pas、manhattan.cpp,则该选手应建的文件夹结构如下所示:
|---JS-001 (此文件夹已经建好)
|---cashier/
|---cashier.c
|--- dune/
|--- dune.pas
|---manhattan/
|---manhattan.cpp
比赛中涉及的所有文件名(包括源程序名、输入文件名、输出文件名、答案文件名),都必须严格按照题目要求命名,严格区分大小写。例如:题目要求输入文件名为game.in、则程序中必须按照该名字打开文件,不能使用Game.in、GAME.IN等名字。
注意程序文件名、输入文件名、输出文件名,测试点个数。
注意空间限制(一般为128MB)、时间限制(一般为1S)。
由于编译及评测均在NOI Linux下进行,所有文件名、语句一律小写(输出内容除外)。
为每道试题建的子目录名称、源程序名等可以复制、复制、复制(重要的事说三遍)对应的试题英文名,很多大神自己敲个文件名都容易出错。
五.上机环境
分类 | 软件及版本 | 说明 | 启动/使用方法 |
系统 软件 | NOI Linux 1.4.1 | 操作系统 | 选手自选 |
Windows | 操作系统 | ||
编译器 | GCC 4.8.4 | C编译器 | 终端运行,命令行: |
G++ 4.8.4 | C++编译器 | 终端运行,命令行: | |
FPC 2.6.2 | Pascal编译器 | 终端运行,命令行: | |
调试器 | GDB 7.7.1 | 命令行调试器 | 终端运行,命令行:gdb |
DDD 3.3.12 | 命令行调试器 | 终端运行,命令行:ddd | |
集成 开发 环境 | GUIDE 1.02 | 单文件程序 | 鼠标点击启动: 应用程序→编程→GUIDE |
Anjuta 3.10.2 | C/C++ IDE | 鼠标点击启动: 应用程序→编程→Anjuta IDE | |
Lazarus 1.0.12 | Pascal IDE | 鼠标点击启动: 应用程序→编程→Lazarus |
注意:
1、本上机环境是NOI官网上2016年11月8日更新的最新版NOI Linux。
详见:http://noi.cn/noi-linux
2、评测在NOI Linux下,以源文件成绩为准,不测可执行文件,对于同一题只能提交一个源程序。
选手成绩以NOI科学委员会在最新版本的NOI Linux系统及其指定的评测工具下的评测结果为准。因比赛环境与上述评测环境的不同而产生的问题(例如,Windows下C/C++的__int64类型在Linux下无法通过编译,文本文件中 Windows系统换行符与Linux系统换行符的实际编码不同,等等),责任将由选手或其所在省的组织单位承担。NOI科学委员会一概不受理就此类问题提出的申诉。(摘自官网)
详见:http://www.noi.cn/about/rules/692-noip
3、除题目有规定外,比较方式一律采用多行单字符(过滤行内空格)的字符串比较。
六、关于竞赛中不同语言使用限制的说明
编程通则
1.对于每一道试题,选手只应提交一个源程序文件。源程序文件名由试题名称缩写加后缀构成,源程序文件名及后缀一律使用小写。PASCAL、C及C++程序的后缀分别为.pas,.c,或.cpp。当参赛选手对一道试题提交多份使用不同后缀的源程序文件时,测试系统按照.c, .cpp, .pas的顺序选取第一份存在的文件进行编译和评测,并忽略其他文件。
2.使用C/C++语言者不得使用自己的头文件,使用Pascal语言者不得使用自己的库单元。除另有规定外,每道题参赛程序源文件不得大于100KB,如选手在规定目录下另建其它子目录,这些子目录中的文件均会被评测系统忽略。
3.选手程序应正常结束并返回Linux系统,主函数的返回值必须为0。
4.选手程序中只允许通过对指定文件的读写、以及对指定库函数的调用等题目中明确规定的方式与外部环境通信。在程序中严禁下列操作:
a. 试图访问网络
b. 使用fork、exec、system或其它线程/进程生成函数
c. 打开或创建题目规定的输入/输出文件之外的其它文件和目录
d. 运行其它程序
e. 改变文件系统的访问权限
f. 读写文件系统的管理信息
g. 使用除读写规定的输入/输出文件之外的其它系统调用
h. 捕获和处理鼠标和键盘的输入消息
i. 读写计算机的输入/输出端口
5.除题目另有规定外,选手程序中所使用的静态和动态内存空间总和不得超过128MB。
对C程序的限制
1. 程序禁止使用内嵌汇编和以下划线开头的库函数或宏(自己定义的除外)。
2. 在程序中只能使用下述头文件以及被它们所间接包含:assert.h, ctype.h, errno.h,float.h,limits.h,math.h,stdio.h,stdlib.h,string.h,time.h。
3. 64位整数只能使用longlong类型及unsigned long long类型。
对C++程序的限制
1. 程序禁止使用内嵌汇编和以下划线开头的库函数或宏(自己定义的除外)。
2. 64位整数只能使用longlong类型及unsigned long long类型。
3. 可以使用STL中的模板。
对Pascal程序的限制
1. 程序禁止使用内嵌汇编,并禁止使用任何编译开关。
2. 在程序中禁止使用除system库(自动加载)和math库(须用uses math子句)之外的其他单元。
凡满足上述规定,并且能在题目规定的命令行下编译通过的程序均为合法的源程序。但即使源程序合法,只要程序执行时有违规行为时,仍被判定为违规。