評測與提交說明
APCS 專區的題目怎麼提交、結果代碼代表什麼、分數怎麼算、模擬測驗怎麼進行,以及本站的編譯參數與限制。
提交方式與語言
在題目頁下方的編輯器貼上程式碼,選語言後按「提交」。APCS 專區的題目可以用 C(C17)、C++17 或 Python 3 提交,與正式檢測相同(正式檢測另有 Java,本站未提供)。時間限制不分語言:Python 和 C++ 用同一個時限。
- C++ 一律用
-std=c++17;正式檢測的環境請以 APCS 官網公告為準,本站的編譯器版本與參數列在頁尾。 - 提交前用「範例測試」跑一遍題目的範例輸入,能先抓到讀入格式、輸出格式的錯。
評測結果代碼
專區的題目全部用標準比對:忽略每行結尾的空白與檔尾的空行,其他任何差異都是 WA。沒有格式錯誤(PE)也沒有部分分(PAC)這兩種結果。
| 代碼 | 意思 | 說明 |
|---|---|---|
AC | Accepted | 通過了所有測試資料,拿到這題的全部分數。 |
WA | Wrong Answer | 程式正常執行完成,但輸出不正確;輸出多印、少印、順序或格式不對都算。 |
TLE | Time Limit Exceeded | 程式執行太久,超過題目頁標示的時間限制。Python 明顯較慢,輸入量大時用 sys.stdin 一次讀完。 |
MLE | Memory Limit Exceeded | 使用的記憶體超過題目限制,常見於陣列開太大。 |
OLE | Output Limit Exceeded | 印出太多內容,通常是無限迴圈或除錯輸出忘了刪。 |
RE | Runtime Error | 程式執行到一半出錯。C/C++ 常見的是陣列超出範圍、除以零;Python 是沒有處理的例外(例如 NameError),見下方「RE 常見回饋」與「用 Python 解題」。 |
IR | Invalid Return | 程式用不正常的方式結束,例如 C/C++ 的 main 回傳非 0 的值,或 Python 呼叫 sys.exit(1)。 |
CE | Compile Error | 程式無法編譯,提交頁會顯示編譯器訊息。 |
IE | Internal Error | 評測系統出了問題,與你的程式無關,通常需要管理員處理。 |
QU / P / G | Queued / Processing / Grading | 提交正在排隊、準備或評測中,尚未完成。 |
AB | Aborted | 提交被中止,常見於管理員取消或重新評測。 |
計分方式
- 每題的測試資料分成幾組,提交結果會列出每一組通過與否;題目頁與提交列表顯示的百分比就是通過的比例。
- 題目的配分(計入個人統計)要全部測試資料通過才算得分;沒有全過的提交會保留通過比例,讓你知道離滿分多遠。
- 同一題可以重複提交,以最好的一次為準。
模擬測驗
- 在「模擬測驗」頁選一場,進入作答系統後按「開始檢測並開始計時」才開始計時;按下前可以先看注意事項。
- 作答時間依該場設定(作答系統會顯示倒數);時間到自動結束,也可以提早交卷。
- 每場模擬測驗每人只能作答一次;結束後在「模擬測驗」頁看各題分數。
- 作答期間評測規則與一般提交相同(同樣的語言、時限與結果代碼)。
範例測試與自訂測試
範例測試頻率
1 / 1 s
自訂測試輸入上限
1 MiB
自訂測試頻率
1 / 3 s
- 範例測試:登入後在題目頁按「執行範例」,用題目的範例輸入跑你的程式並比對範例輸出;Python 出錯時這裡看得到行號。
- 自訂測試(自己給輸入)僅限 AA 競程課程學員。
- 兩者都只是輔助除錯,不影響正式提交的分數;範例通過不代表正式評測會通過。
提交限制
程式碼長度
65,536 characters
同時排隊提交數
2
- 正式評測使用每題頁面上標示的時間與記憶體限制。
- 排隊限制只限制同時等待評測的提交數,不是每題可提交次數。
RE 常見回饋
| 回饋訊息 | 常見原因 |
|---|---|
segmentation fault / bus error | 程式碰到不該碰的記憶體:陣列超出範圍、指標用錯、遞迴太深,或記憶體用太多。 |
floating point exception | 不合法的算術運算,例如整數除以零或模零。 |
std::bad_alloc | C++ 配置記憶體失敗,通常是 vector、陣列開太大。 |
failed initializing | 全域或靜態資料太大,程式還沒進 main 就超過記憶體限制。 |
killed | 程式被系統強制停止,通常和資源用太多有關。 |
- 同樣是記憶體問題,有時顯示成
MLE,有時顯示成RE並附segmentation fault或std::bad_alloc。 - RE 只出現在大測資時,優先檢查陣列大小、遞迴深度、索引是否合法,以及是否有除以零。
用 Python 解題
CPython 3.10,只能使用標準函式庫。
| 你看到的結果 | 代表什麼 |
|---|---|
RE+例外名稱(NameError、TypeError、IndexError、ValueError…) | 程式執行到一半出錯、沒有處理就中止了。提交頁不顯示行號(隱藏測資不能外洩);用「執行範例」或在自己的電腦跑範例輸入,就會看到完整的錯誤訊息與行號。 |
RE+ValueError,範例就錯 | 多半是讀輸入的方式不對:同一行有好幾個數字時,int(input()) 會失敗,要用 input().split() 拆開再轉整數。 |
CE | 語法錯誤(少了冒號、縮排不一致、括號沒關)會在執行前就被擋下來,並顯示是第幾行。 |
WA,而且輸出是空的 | 程式沒有印出任何東西。常見原因是把 if __name__ == '__main__': 裡的 '__main__' 改成了別的字;這一行必須原封不動。 |
TLE | Python 的迴圈比 C++ 慢很多。輸入量大時改用 sys.stdin 一次讀完;還是超時就代表需要更好的演算法,或這題不適合用 Python。 |
語言與編譯參數
APCS 專區可用的三種語言在本站的執行環境。
| ID | 語言 | Runtime | 編譯參數 |
|---|---|---|---|
C17 |
C17 | gcc17 11 |
gcc -std=c17 -Wall -DONLINE_JUDGE -O2 -lm -fmax-errors=5 -march=native -s |
CPP17 |
C++17 | g++17 11 |
g++ -std=c++17 -Wall -DONLINE_JUDGE -O2 -lm -fmax-errors=5 -march=native -s |
PY3 |
Python 3 | python3 3.10.12 |
直譯執行,不編譯 |