信息學聯賽輔導:NOI評測環境及對編程語言使用限制的規定
2009-11-12 22:21:17網絡
本規定適用于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-}),也不支持與優化相關的選項。