線上評測系統(Online Judge)是競賽程式中用來測試參賽者程式的系統,主要藉由測試數筆測試資料來確定程式的正確性。許多 Online Judge 都有提供題目供練習,這也是資訊競賽選手最主要的練習網站。
上傳一份程式到 Online Judge 後,可能會獲得以下幾種結果:
許多 Online Judge 都會顯示測試的結果,你可以藉由這些結果來嘗試修正你的程式。
以下將列出一些有許多題目可以練習的網站,供大家練習。
名稱 | 語言 |
---|---|
ZeroJudge | 中文 |
TIOJ | 中文 |
Codeforces | 英文/俄文 |
AtCoder | 英文/日文 |
CSES Problem Set | 英文 |
台灣最大的 online judge 之一,裡面有海量題目,但因為出題的要求不高,導致題目品質參疵不齊,在裡面隨意的戳題可能無法得到很好的學習效果。這裡筆者提供一些初學者練習的方法:
建中架設的 judge,裡面有建中校內賽的題目,也有 TOI 初選、模擬測驗題。筆者認為 TIOJ 題目編號小的題目依然有前面 ZeroJudge 的問題:題目品質不穩定,所以還是需要按照特定的題單寫題才能得到最大的學習效果。
俄羅斯的競程網站,被視為全世界最大的競程網站,裡面有許多題目,也會定期舉辦比賽。參加比賽除了可以模擬比賽情境,也可以藉由比賽積分了解自己的實力。但因為這是俄羅斯網站,受到時區的影響,大部份比賽的開始時間都在台灣時間晚上 10:35,代表要熬夜才能參加比賽。如果想要在這網站刷題,可以利用這個網站來讓自己的練題狀況一目了然。
日本的競程網站,跟 Codeforces 一樣,有大量題目也會舉辦比賽,但因為這是日本網站,比賽時間對台灣比較友善,大部份比賽的開始時間都在假日的晚上 8:00。其中 AtCoder Beginner Contest 為對初學者相當友善的比賽,有空的話可以嘗試。另外,可以利用這個網站來讓自己的練題狀況一目了然。
一個充滿著經典題型的題單,寫題目時可以參考 Competitive Programmer's Handbook 這本書。
筆者認為競賽題目方面的英文資源是比中文還要多的,英文能力允許的話在練習題目時可以多使用國外的網站。