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