NOIP複賽複習(二)競賽環境與注意事項
一、比賽不提供紙質試題,只提供電子版試題檔案。
該檔案壓縮包儲存在計算機桌面上。監考人公佈密碼後,選手自行解密試題。
試題解壓密碼會影響一個人的心情,一定要一次輸對,注意大小寫,不要邊輸入邊檢查,要對自己有自信。
二、江蘇複賽選手上機可自選windows或linux作業系統。
中國計算機學會將使用NOI linux下的Arbiter評測系統進行評測。
作為江蘇賽點的技術支援(打雜的)之一,表示江蘇提供NOI Linux虛擬機已經好幾年了,不在NOI Linux中測試導致出現問題後果自負。而且這幾年考務會上已明確通知所有教練要求學生訓練時使用NOI Linux。(摘自網
Linux與Windows的區別
1、大小寫敏感
a. 在Windows下,檔名大小寫不敏感,例如A.PAS 與 a.pas 與 A.pas 與 a.PaS沒有區別。
b. Linux視檔名為二進位制資料,所以區分大小寫。
c. 考試時一定要看清題目上要求,區別大小寫。
2、關閉檔案
a. Windows在程式退出時默認自動關閉已開啟的檔案,會把緩存中資料寫入硬盤。
b. 在Linux下必須由程式關閉檔案,否則沒有被寫入硬盤。
3、回車符與換行符
a. 在Windows下,兩行文字間有回車符(ASCII 13) 和換行符 (ASCII 10)。
b. 而在Linux下,只有換行符 (ASCII 10)。
4、Read 與 Readln
a. 由於回車與換行在Windows和Linux下存在有區別,編程時要格外注意。
b. 尤其讀字串時,儘量採用Readln,而不要While not eof read或While not eofln read。
5、多餘字元過濾
a. Arbiter評測系統有多個外掛,分為整數比較(過濾無效字元)和逐字節比較。
b. 由於評測外掛的原因,注意輸出結果時,儘量不要有多餘空格或換行。
c. 對於一個整數,使用write輸出。
d. 對於多個整數,輸出最後一個時不要有多餘空格或換行。
e. 對於一個字串,儘量使用write整體輸出。
三、比賽時選手注意事項:
1、除經允許的、必須的競賽用品外,選手不得將書包、手機、U盤、圖書等帶入考場,一經發現,取消本次競賽資格或競賽成績為零分。
帶好:准考證;身份證(或其它有照片的有效證件);筆;少量水。
禁止攜帶U 盤、MP3、計算器、手機等任何與儲存、計算、通訊有關的電子裝置;禁止攜帶一切書籍和其他無關物品;一經發現按作弊處理。草稿紙考場會發,無需自己準備。
2、選手須將身份證和准考證正面向外放在考桌上參賽標籤旁。選手應仔細核對考桌上參賽標籤資訊是否正確,如有錯誤須立刻上報監考人員,否則視為默認同意,賽後不得更改。如選手和准考證上標明的選手不一致,視為替考,替考者和被替考者競賽成績均為零分,並受三年之內不得參賽處罰。
3、開始15分鐘後不得進人考場,以曠考處理;競賽結束30分鐘前,選手不得退出考場(上廁所除外)。
比賽提前30分鐘進場,熟悉考場環境,找到自己座位及廁所位置,更改軟體、系統為自己所喜歡的設定。在別人緊張、坐立不安的時候,你不妨把時間利用起來。依照慣例,考試前幾分鐘是可以先除錯電腦的,所以這時候一定要做些準備:
a. 設定系統:取消桌面背景、更改螢幕解析度、更改虛擬記憶體等。
b. 設定IDE:設定預設路徑、視窗大小、TAB寬度、重啟IDE等。
c. 準備檔案:建立.in .out,建立模板,熟悉計算機,檢查有誤故障,寫下重要且易錯內容,如:快速排序(Qsort)、檔案操作命令等。
4、競賽期間利用各種方式向其他選手傳遞資訊等違規行為,該選手將被立刻取消參賽資格,並從次年算起被禁賽3年。
5、選手聽到監考人員競賽結束的指令後,須停止答卷,待監考人員檢查無誤後離開考場。如競賽結束的指令下達後繼續答題,該選手成績以零分記。
6、選手如發現監考人員及相關人員在競賽過程中有違紀行為或有影響公平競賽的行為,可向CCF署名投訴。
7、監考人公佈密碼後,選手自行解密試題,並在已有的目錄下(已由競賽組織方事先建立,目錄名為選手的參賽編號),由選手為每道試題再單獨建立一個子目錄。
四、目錄結構、檔名規則
比賽開始前,選手應仔細核對考桌上參賽標籤資訊是否正確。
競賽組織方事先已在某盤根目錄下建立以選手參賽編號命名的資料夾,選手應檢查該資料夾名稱是否正確(包括編號及大小寫字母),如有錯誤須立即上報監考人員,由監考人員進行更改。確認無誤後,選手須為每道試題再單獨建立一個子資料夾,子資料夾名與對應的試題英文名相同(參見試題封面頁)。選手提交的每道試題的源程式必須分別存放在相應的子資料夾下。在規定資料夾下,不得包含除有效答案(源程式)以外的任何檔案和資料夾。未按規定檢查、建立資料夾、建立的子資料夾名出現錯誤或提交的源程式沒有存放在相應的子資料夾下等都可能導致選手成績為0分,責任由選手承擔。
例如:假設題目有cashier、dune、manhattan三題,選手JS-001分別使用C、Pascal、C++答題,其最終提交的檔案為cashier.c、dune.pas、manhattan.cpp,則該選手應建的資料夾結構如下所示:
|---JS-001 (此資料夾已經建好)
|---cashier/
|---cashier.c
|--- dune/
|--- dune.pas
|---manhattan/
|---manhattan.cpp
比賽中涉及的所有檔名(包括源程式名、輸入檔名、輸出檔名、答案檔名),都必須嚴格按照題目要求命名,嚴格區分大小寫。例如:題目要求輸入檔名為game.in、則程式中必須按照該名字開啟檔案,不能使用Game.in、GAME.IN等名字。
注意程式檔名、輸入檔名、輸出檔名,測試點個數。
注意空間限制(一般為128MB)、時間限制(一般為1S)。
由於編譯及評測均在NOI Linux下進行,所有檔名、語句一律小寫(輸出內容除外)。
為每道試題建的子目錄名稱、源程式名等可以複製、複製、複製(重要的事說三遍)對應的試題英文名,很多大神自己敲個檔名都容易出錯。
五.上機環境
分類 |
軟體及版本 |
說明 |
啟動/使用方法 |
系統 軟體 |
NOI Linux 1.4.1 |
作業系統 |
選手自選 |
Windows |
作業系統 |
||
編譯器 |
GCC 4.8.4 |
C編譯器 |
終端執行,命令列: |
G++ 4.8.4 |
C++編譯器 |
終端執行,命令列: |
|
FPC 2.6.2 |
Pascal編譯器 |
終端執行,命令列: |
|
偵錯程式 |
GDB 7.7.1 |
命令列偵錯程式 |
終端執行,命令列:gdb |
DDD 3.3.12 |
命令列偵錯程式 |
終端執行,命令列:ddd |
|
整合 開發 環境 |
GUIDE 1.02 |
單檔案程式 |
滑鼠點選啟動: 應用程式→程式設計→GUIDE |
Anjuta 3.10.2 |
C/C++ IDE |
滑鼠點選啟動: 應用程式→程式設計→Anjuta IDE |
|
Lazarus 1.0.12 |
Pascal IDE |
滑鼠點選啟動: 應用程式→程式設計→Lazarus |
注意:
1、本上機環境是NOI官網上2016年11月8日更新的最新版NOI Linux。
詳見:http://noi.cn/noi-linux
2、評測在NOI Linux下,以原始檔成績為準,不測可執行檔案,對於同一題只能提交一個源程式。
選手成績以NOI科學委員會在最新版本的NOI Linux系統及其指定的評測工具下的評測結果為準。因比賽環境與上述評測環境的不同而產生的問題(例如,Windows下C/C++的__int64型別在Linux下無法通過編譯,文字檔案中 Windows系統換行符與Linux系統換行符的實際編碼不同,等等),責任將由選手或其所在省的組織單位承擔。NOI科學委員會一概不受理就此類問題提出的申訴。(摘自官網)
詳見:http://www.noi.cn/about/rules/692-noip
3、除題目有規定外,比較方式一律採用多行單字元(過濾行內空格)的字串比較。
六、關於競賽中不同語言使用限制的說明
程式設計通則
1.對於每一道試題,選手只應提交一個源程式檔案。源程式檔名由試題名稱縮寫加字尾構成,源程式檔名及字尾一律使用小寫。PASCAL、C及C++程式的字尾分別為.pas,.c,或.cpp。當參賽選手對一道試題提交多份使用不同字尾的源程式檔案時,測試系統按照.c, .cpp, .pas的順序選取第一份存在的檔案進行編譯和評測,並忽略其他檔案。
2.使用C/C++語言者不得使用自己的標頭檔案,使用Pascal語言者不得使用自己的庫單元。除另有規定外,每道題參賽程式原始檔不得大於100KB,如選手在規定目錄下另建其它子目錄,這些子目錄中的檔案均會被評測系統忽略。
3.選手程式應正常結束並返回Linux系統,主函式的返回值必須為0。
4.選手程式中只允許通過對指定檔案的讀寫、以及對指定庫函式的呼叫等題目中明確規定的方式與外部環境通訊。在程式中嚴禁下列操作:
a. 試圖訪問網路
b. 使用fork、exec、system或其它執行緒/程序生成函式
c. 開啟或建立題目規定的輸入/輸出檔案之外的其它檔案和目錄
d. 執行其它程式
e. 改變檔案系統的訪問許可權
f. 讀寫檔案系統的管理資訊
g. 使用除讀寫規定的輸入/輸出檔案之外的其它系統呼叫
h. 捕獲和處理滑鼠和鍵盤的輸入訊息
i. 讀寫計算機的輸入/輸出埠
5.除題目另有規定外,選手程式中所使用的靜態和動態記憶體空間總和不得超過128MB。
對C程式的限制
1. 程式禁止使用內嵌彙編和以下劃線開頭的庫函式或巨集(自己定義的除外)。
2. 在程式中只能使用下述標頭檔案以及被它們所間接包含:assert.h, ctype.h, errno.h,float.h,limits.h,math.h,stdio.h,stdlib.h,string.h,time.h。
3. 64位整數只能使用longlong型別及unsigned long long型別。
對C++程式的限制
1. 程式禁止使用內嵌彙編和以下劃線開頭的庫函式或巨集(自己定義的除外)。
2. 64位整數只能使用longlong型別及unsigned long long型別。
3. 可以使用STL中的模板。
對Pascal程式的限制
1. 程式禁止使用內嵌彙編,並禁止使用任何編譯開關。
2. 在程式中禁止使用除system庫(自動載入)和math庫(須用uses math子句)之外的其他單元。
凡滿足上述規定,並且能在題目規定的命令列下編譯通過的程式均為合法的源程式。但即使源程式合法,只要程式執行時有違規行為時,仍被判定為違規。