信息學(xué)聯(lián)賽輔導(dǎo):NOI評測環(huán)境及對編程語言使用限制的規(guī)定
2009-11-12 22:21:17網(wǎng)絡(luò)
本規(guī)定適用于NOI系列的各項全國性競賽。本規(guī)定自發(fā)布之日起150天后生效。NOI其它規(guī)章、規(guī)則中所有與本規(guī)定不符之處,均以本規(guī)定為準(zhǔn)。不遵守本規(guī)定所造成的不良后果由選手本人承擔(dān)。
評測環(huán)境
NOI系列競賽使用不低于如下版本的編譯器進行評測編譯:
PASCAL語言:fpc 2.0.1
C語言: gcc 3.2.2
C++語言: g++ 3.2.2
選手答案程序的成績與競賽之前發(fā)布的標(biāo)準(zhǔn)版本編譯器所生成的可執(zhí)行代碼的運行結(jié)果為準(zhǔn)(http://www.noi.cn/noi2009-noip2009)。
編程通則
1.對于每一道試題,選手只應(yīng)提交一個源程序文件。源程序文件名由試題名稱縮寫加后綴構(gòu)成,源程序文件名及后綴一律使用小寫。PASCAL、C及C++程序的后綴分別為.pas,.c,或.cpp。當(dāng)參賽選手對一道試題提交多份使用不同后綴的源程序文件時,測試系統(tǒng)只從其中任意選取一份進行編譯和評測,并以此作為選手該道試題的得分。
2.使用C/C++語言者不得使用自己的頭文件,使用Pascal語言者不得使用自己的庫單元。除另有規(guī)定外,每道題參賽程序源文件的長度不應(yīng)大于100KB,不得在規(guī)定目錄下另建其它子目錄。
3.選手程序應(yīng)正常結(jié)束并返回Linux系統(tǒng),主函數(shù)的返回值必須為0。
4.選手程序中只允許通過對指定文件的讀寫、以及對指定庫函數(shù)的調(diào)用等題目中明確規(guī)定的方式與外部環(huán)境通信。在程序中嚴(yán)禁下列操作:
試圖訪問網(wǎng)絡(luò)
使用fork、exec、system或其它線程/進程生成函數(shù)
打開或創(chuàng)建題目規(guī)定的輸入/輸出文件之外的其它文件和目錄
以任何方式對標(biāo)準(zhǔn)輸入/輸出文件重定向
運行其它程序
改變文件系統(tǒng)的訪問權(quán)限
讀寫文件系統(tǒng)的管理信息
使用除讀寫規(guī)定的輸入/輸出文件之外的其它系統(tǒng)調(diào)用
捕獲和處理鼠標(biāo)和鍵盤的輸入消息
讀寫計算機的輸入/輸出端口
5.除題目另有規(guī)定外,選手程序中所使用的靜態(tài)內(nèi)存空間總和不得超過20MB,動態(tài)申請內(nèi)存空間的總和不得超過30MB。
對C程序的限制
C程序中只能使用下列合法的基本數(shù)據(jù)類型
名稱
長度
char, unsigned char
1字節(jié)
short, unsigned short
2字節(jié)
int, unsigned int
4字節(jié)
long, unsigned long
4字節(jié)
float
4字節(jié)
double
8字節(jié)
C程序中只能使用下列標(biāo)準(zhǔn)頭文件
名稱
說明
stdio.h
stdlib.h
math.h
試題明確禁止時不得使用
ctype.h
string.h
errno.h
limits.h
float.h
對C++程序的限制
C++程序中只能使用下列合法基本數(shù)據(jù)類型
名稱
長度
char, unsigned char
1字節(jié)
short, unsigned short
2字節(jié)
int, unsigned int
4字節(jié)
long ,unsigned long
4字節(jié)
float
4字節(jié)
double
8字節(jié)
bool
1字節(jié)
C++程序中只能使用下列標(biāo)準(zhǔn)頭文件
名稱
說明
stdio.h
stdlib.h
math.h
試題明確禁止時不得使用
ctype.h
string.h
errno.h
limits.h
float.h
iostream
string
iterator
bitset
C++程序中允許使用下列模板
模板類型
相關(guān)頭文件
布爾集合
<bitset>
迭代器
<iterator>
串
<string>
流
<iostream>
C++程序中禁止使用下列模板:
序列:vector,list,deque
序列適配器:stack,queue,priority_queue
關(guān)聯(lián)容器:map, multimap, set, multiset
擬容器:valarray
散列容器:hash_map, hash_set, hash_multimap, hash_multiset
所有的標(biāo)準(zhǔn)庫算法。
與這些模板相關(guān)的下列頭文件禁止出現(xiàn)在程序中:
<vector >
<list >
<deque >
<stack >
<map >
<set >
<algorithm>
對PASCAL程序的限制
1.對于Pascal語言的程序,當(dāng)使用IDE和fpc編譯結(jié)果不一致時,以fpc的編譯結(jié)果為準(zhǔn)。
2.允許使用數(shù)學(xué)庫(uses math子句),以及ansistring。但不允許使用編譯開關(guān)(最后測試時pascal的范圍檢查開關(guān)默認(rèn)關(guān)閉:{$R-,Q-,S-}),也不支持與優(yōu)化相關(guān)的選項。