什麼是競程?
競技程式(Competitve Programming,簡稱競程、CP)是一個智力運動(Mind Sport)。
通常是在一場程式競賽(Programming Contest)中會有準備數道題目,每個題目都是由以下組成:
- 題目敘述:說明這道題目要你做什麼事。
- 輸入說明:題目會把測試資料以怎樣的形式輸入進你的程式。
- 輸出說明:你要把題目要求的答案以怎樣的形式輸出出來。
- 時間限制:你的程式必須在多久的時間以內結束。
- 記憶體限制:你的程式最多能使用多少記憶體
- 其他:視題目種類有時候會有其他東西
而你要在比賽時間內(通常是數小時)撰寫出一個程式,其中這個程式會把題目的測試資料輸入進來,並且在時間限制內把題目要求的答案輸出。把程式碼提交到伺服器之後,伺服器會有數筆「測試資料」,你的程式會在每筆測試資料分別執行一次,並且伺服器會把程式輸出的答案跟正確答案比對。如果程式在所有測試資料的輸出都跟正確答案相符,你的程式會被判成「正確答案」(Accepted,AC),即代表你成功解出了這道問題。
在競技程式中,題目通常不會要求寫出含有使用者界面(GUI)的程式,所有測試資料皆在標準輸入(stdin)中被輸入,而答案則應該被輸出到標準輸出(stdout)。有時也會有從輸入檔做輸入,輸出到輸出檔的「檔案 IO」。
如果你認為影片比較有助於理解: