本规定适用于NOI 系列的各项全国性竞赛。本规定自发布之日起150 天后生效。NOI 其它规章、规则中所有与本规定不符之处,均以本规定为准。不遵守本规定所造成的不良后果由选手本人承担。
评测环境
NOI 系列竞赛使用不低于如下版本的编译器进行评测编译:
PASCAL 语言:fpc 2.0.1
C 语言: gcc 3.2.2
C++ 语言: g++ 3.2.2
选手答案程序的成绩与竞赛之前发布的标准版本编译器所生成的可执行代码的运行结果为准( http://www.noi.cn/noi2009-noip2009 )。
编程通则
1 .对于每一道试题,选手只应提交一个源程序文件。源程序文件名由试题名称缩写加后缀构成,源程序文件名及后缀一律使用小写。PASCAL 、C 及C++ 程序的后缀分别为.pas ,.c ,或.cpp 。当参赛选手对一道试题提交多份使用不同后缀的源程序文件时,测试系统只从其中任意选取一份进行编译和评测,并以此作为选手该道试题的得分。
2 .使用C/C++ 语言者不得使用自己的头文件,使用Pascal 语言者不得使用自己的库单元。除另有规定外,每道题参赛程序源文件的长度不应大于100KB ,不得在规定目录下另建其它子目录。
3 .选手程序应正常结束并返回Linux 系统,主函数的返回值必须为0 。
4 .选手程序中只允许通过对指定文件的读写、以及对指定库函数的调用等题目中明确规定的方式与外部环境通信。在程序中严禁下列操作:
试图访问网络
使用fork 、exec 、system 或其它线程/ 进程生成函数
打开或创建题目规定的输入/ 输出文件之外的其它文件和目录
以任何方式对标准输入/ 输出文件重定向
运行其它程序
改变文件系统的访问权限
读写文件系统的管理信息
使用除读写规定的输入/ 输出文件之外的其它系统调用
捕获和处理鼠标和键盘的输入消息
读写计算机的输入/ 输出端口
5 .除题目另有规定外,选手程序中所使用的静态内存空间总和不得超过20MB ,动态申请内存空间的总和不得超过30MB 。
对C 程序的限制
C 程序中只能使用下列合法的基本数据类型
名称 | 长度 |
char, unsigned char | 1 字节 |
short, unsigned short | 2 字节 |
int, unsigned int | 4 字节 |
long, unsigned long | 4 字节 |
float | 4 字节 |
double | 8 字节 |
C 程序中只能使用下列标准头文件
名称 | 说明 |
stdio.h |
|
stdlib.h |
|
math.h | 试题明确禁止时不得使用 |
ctype.h |
|
string.h |
|
errno.h |
|
limits.h |
|
float.h |
|
对C++ 程序的限制
C++ 程序中只能使用下列合法基本数据类型
名称 | 长度 |
char, unsigned char | 1 字节 |
short, unsigned short | 2 字节 |
int, unsigned int | 4 字节 |
long ,unsigned long | 4 字节 |
float | 4 字节 |
double | 8 字节 |
bool | 1 字节 |
C++ 程序中只能使用下列标准头文件
名称 | 说明 |
stdio.h |
|
stdlib.h |
|
math.h | 试题明确禁止时不得使用 |
ctype.h |
|
string.h |
|
errno.h |
|
limits.h |
|
float.h |
|
iostream |
|
string |
|
iterator |
|
bitset |
|
C++ 程序中允许使用下列模板
模板类型 | 相关头文件 |
布尔集合 | <bitset> |
迭代器 | <iterator> |
串 | <string> |
流 | <iostream> |
C++ 程序中禁止使用下列模板:
序列:vector ,list ,deque
序列适配器:stack ,queue ,priority_queue
关联容器:map, multimap, set, multiset
拟容器:valarray
散列容器:hash_map, hash_set, hash_multimap, hash_multiset
所有的标准库算法。
与这些模板相关的下列头文件禁止出现在程序中:
<vector >
<list >
<deque >
<stack >
<map >
<set >
<algorithm>
对PASCAL 程序的限制
1. 对于Pascal 语言的程序,当使用IDE 和fpc 编译结果不一致时,以fpc 的编译结果为准。
2. 允许使用数学库(uses math 子句) ,以及ansistring 。但不允许使用编译开关(最后测试时pascal 的范围检查开关默认关闭:{$R-,Q-,S-} ),也不支持与优化相关的选项。
注:2008 年1 月1 日修订