NOI竞赛规则2009-09-17 10:00:00阅读量:84225

 
 

为保证NOI竞赛的科学性和公正性,保证竞赛环境的一致性和稳定性,并为竞赛的承办单位规范化组织竞赛提供实施标准的指导,特制订本规则。

竞赛环境

场地

全体参赛选手分布在不超过4个相距30米之内的竞赛场地。每位参赛选手拥有面积不小于1.5M2的工作场地和正面面宽不小于0.8M的工作台,独立使用一台配备有规定的操作系统和编程工具的计算机。

竞赛组织者将在竞赛场地为选手提供草稿纸、饮水、以及必要的食品。

设备

选手竞赛用机的配置不低于下列指标:

CPU Intel 赛扬866 或相同及更高指标的其它类型CPU

内存 256MB

硬盘 10GB,其中选手可用空间不小于0.5GB

网卡 100M

显示器 15

键盘 标准英文输入键盘

鼠标 标准双键鼠标

选手竞赛用机上配备下列软件系统:

操作系统:Linux,内核版本:2.4

桌面系统:GNOME/KDE;

浏览器:Firefox, Konqueror

编辑工具:mcedit, vim, kate, kwrite, kdevelop, rhide

编译系统: gcc 3.2.2, g++ 3.2.2, Free Pascal 2.0.1

调试工具: gdb, ddd

上述软件都配有英文说明文档。操作系统和编译系统的具体版本以及对各种编程语言的使用限制见附件1。对该附件的修改在每次竞赛至少5个月前公布。

竞赛内容

NOI竞赛的题目以考查选手对算法和编程能力的掌握为主。题目类型有以下三种:

非交互式程序题

非交互式程序题要求选手提交答案程序的源文件。该程序从一个正文文件中读入数据,并向指定的输出文件中写入计算结果。非交互式程序题的题面包括下列内容:

  • 求解问题的描述
  • 输入文件名和输出文件名(可以是标准输入/输出)
  • 输入数据格式、输出数据格式、以及输入数据范围
  • 对程序使用计算资源的限制,以及其它可能的限制

交互式程序题

交互式程序题要求选手提交答案程序的源文件。该程序通过调用所提供的库函数实现数据的输入和输出。交互式程序题的题面包括下列内容:

  • 求解问题的描述
  • 库函数的功能、函数原型、以及获取和链接方式
  • 输入数据格式、输出数据格式、以及输入数据范围
  • 对程序使用计算资源的限制,以及其它可能的限制

答案提交题

答案提交题不要求选手提交程序的源文件。选手需要按题目要求,根据给定的输入数据文件生成一组输出数据文件。该组数据文件既可以是由选手的程序输出的,也可以是由选手手工构造的。当选手使用自行设计的程序生成题目答案时,其所使用的程序不应提交。答案提交题的题面包括下列内容:

  • 求解问题的描述
  • 输入数据格式、输出数据格式
  • 输入数据文件的获取方法

对于交互式程序题和非交互式程序题,对选手程序使用内存大小的限制包括运行代码、程序运行时所需的栈和堆在内的所有工作内存的总和。当题面中没有给出对使用内存 的限制时,以选手用机的实际使用限制为准。对选手程序运行时间的限制一般均大于标准答案程序所需最长运行时间的50%以上,以避免测试中的超时判断误差。

竞赛前的练习和标准化笔试题

选手在正式竞赛前应有不少于2个小时的练习时间,以熟悉竞赛场地、设备和软件环境、以及答案提交方式。竞赛前的练习应安排在第一场竞赛的前一天。在赛前练习结束后,应安排不少于30分钟的时间进行标准化笔试题的测试。标准化笔试题包含单选题、多选题和填空题,题目涉及的内容包括计算机和编程的基本知识、NOI竞赛所使用的操作系统、编程工具等的使用方法,以及基本竞赛规则。标准化笔试题的成绩计入选手竞赛的总成绩。

竞赛时间

NOI的竞赛分为两场,每场竞赛的时间为5小时。两场竞赛之间应间隔一天。

赛场纪律

选手可以携带书写工具,如钢笔、铅笔等,以及手表和适量的衣物等进入赛场。有特殊情况需要携带其它物品者需事先取得竞赛委员会的批准。

选手不可以携带上述规定之外的其它物品,如纸张、书籍、食品、饮料等进入赛场。选手被严格禁止携带软盘、光盘、U盘等存储设备和介质,以及手机、电子辞典、PDA等电子及通信设备。凡携带上述被严格禁止的设备进入竞赛场地者,在竞赛开始后一经发现,无论是否使用,均以作弊论处,取消其该场竞赛的资格和成绩。

选手在竞赛中不得与其他选手交谈,不得干扰他人的竞赛活动,不得损坏竞赛设备。

选手在竞赛过程中如需入厕,需举手向赛场服务人员示意并征得允许。

竞赛的开始和结束

竞赛选手应佩戴选手标志,在竞赛前5分钟入场,按指定位置就座。竞赛在竞赛场地负责人发出竞赛开始的指令后开始。在竞赛开始前选手不得触动竞赛桌面上包括计算机、键盘、鼠标和试卷在内的任何物品。

竞赛场地负责人应在竞赛结束前515分钟之间发出竞赛即将结束的提示,并在竞赛结束时间到达时发出竞赛结束的指令。在听到竞赛结束的指令后,除了获得加时补偿的选手外,其余选手应立即停止竞赛活动,并携带属于个人的物品离开竞赛场地。

竞赛中的答疑

选手在竞赛过程中对竞赛的题目、竞赛设备以及编程环境有疑问时,应举手向竞赛场地负责人或场地服务人员提问。

选手在竞赛过程中遇有计算机或软件工具故障,或其它妨碍竞赛的情况,应及时举手向竞赛场地负责人或场地服务人员报告。竞赛场地负责人或场地服务人员应及时处置。对于妨碍选手竞赛超过3分钟的,应记录在案并给以加时补偿。

答案的提交

选手完成的赛题答案必须按题目的要求保存为规定格式的文件,并存放在规定的目录下。选手提交的程序源文件必须不大于100KB。答案提交类题目的答案文件不得超过题目规定的大小;题目未规定大小的必须不大于100KB。未按规定的格式、名称和大小生成和保存答案文件的将视为未提交,并且不被评测,因此不能得分。

对于程序设计题,选手提交的答案不得包含下列内容:

试图访问网络

使用fork或其它线程/进程生成函数

打开或创建题目规定的输入/输出文件之外的其它文件

以任何方式对标准输入/输出文件的重定向

运行其它程序

改变文件系统的访问权限

读写文件系统的管理信息

使用除读写规定的输入/输出文件之外的其它系统调用

违反上述规定中的任何一项的程序将被视为违规,因此不被评测,不能得分。

评测和成绩发布

除另有说明者外,选手提交的程序设计题将在Linux系统上使用下列编译命令进行编译:

C程序: cc -static -o <程序名> <程序名>.c -lm

C++程序:g++ -static -o <程序名> <程序名>.cpp -lm

Pascal程序:/usr/local/bin/ppc386 -XS -o<程序名>c <程序名>.pas

未能通过编译并正确生成可执行文件的程序在该题目上不得分。能够通过编译并正确生成可执行文件的程序将在与选手编程环境相同的系统平台上,在题面规定的限制条件下运行和评测。对于程序设计题,选手答案的得分将取决于结果的正确性、算法的效率、以及程序运行的效率。评测将使用多个测试点,以区分选手答案的正确程度和效率。在正确性和效率方面都符合题目要求的答案将获得该题目的满分。算法和程序实现正确,但效率较低的答案也可能在若干测试点因超时而无法获得分数。

选手的程序必须在程序执行结束时显式地返回0。返回其它值的程序将被认为是结果不正确,并因此不能得分。

对于答案提交题,只对选手答案的正确性进行评测。

评测结果将在竞赛结束后150分钟之内,以成绩单的形式发给选手所在队的领队签收。成绩单上将标出选手各题在每个测试点上的得分,以及未得满分的测试点的错误信息,参见附录。选手每道题的得分为其在该题各个测试点上的得分之和。选手每天的得分为其在当天各道题上的得分之和。

复测

选手在接到成绩单后可以在规定的时间之内,在其竞赛时使用的计算机上对其答案进行复测。选手在竞赛结束时所提交的答案依然保存在题目所规定的文件目录中,复测所需的测试数据和答案在复测开始前将被下发到选手计算机上指定的文件目录中。

复测时,选手可以和领队或其他队员进行讨论,但不得妨碍其他队的队员的复测活动。

申诉

复测完毕后,竞赛选手对于评测成绩有异议的,可向科学委员会提出申诉。申诉须在复测结束后3小时之内,由竞赛选手本人提出。提出申诉的竞赛选手须按规定填写申诉表(附件2),由本队领队签字后提交给现场评测人员或科学委员会成员。

申诉必须依据竞赛选手本人在竞赛时提交的程序或答案以及在复测时获得的结果提出。

申诉的受理

科学委员会在接到选手的申诉后应及时研究,并决定是否受理。对于受理的申诉,科学委员会应尽快做出处理,并使用申诉处理表(附件3)将处理结果书面告知申诉人。对于改变了选手得分的申诉处理,科学委员会在处理完毕后应向申诉人发放新的成绩单,并按新的得分计算申诉人的竞赛成绩。

对于不受理的申诉,科学委员会应在选手提交的申诉表中注明拒绝受理的理由,并尽快将申诉表退还申诉人。申诉人如对科学委员会不受理的决定有异议,并有新的理由和证据的,可以再次提出申诉。

下列申诉将不被受理:

以修改过的程序或答案为依据的

没有复测结果支持的

超过申诉时间的

对评测结果中的超时有异议,且复测结果的运行时间与题目时间限制之差小于题目时间限制5%的。

对于以修改过的程序或答案为依据提出申诉并且声称依据原始程序或答案的,一经查实,将对申诉人及其领队给予警告。情节严重者将取消申诉人当天的竞赛成绩。

附则

本规则自20076月开始执行

本规则由科学委员会负责解释