評測與提交說明

APCS 專區的題目怎麼提交、結果代碼代表什麼、分數怎麼算、模擬測驗怎麼進行,以及本站的編譯參數與限制。

提交方式與語言

在題目頁下方的編輯器貼上程式碼,選語言後按「提交」。APCS 專區的題目可以用 C(C17)、C++17 或 Python 3 提交,與正式檢測相同(正式檢測另有 Java,本站未提供)。時間限制不分語言:Python 和 C++ 用同一個時限。

  • C++ 一律用 -std=c++17;正式檢測的環境請以 APCS 官網公告為準,本站的編譯器版本與參數列在頁尾。
  • 提交前用「範例測試」跑一遍題目的範例輸入,能先抓到讀入格式、輸出格式的錯。

評測結果代碼

專區的題目全部用標準比對:忽略每行結尾的空白與檔尾的空行,其他任何差異都是 WA。沒有格式錯誤(PE)也沒有部分分(PAC)這兩種結果。

代碼意思說明
ACAccepted通過了所有測試資料,拿到這題的全部分數。
WAWrong Answer程式正常執行完成,但輸出不正確;輸出多印、少印、順序或格式不對都算。
TLETime Limit Exceeded程式執行太久,超過題目頁標示的時間限制。Python 明顯較慢,輸入量大時用 sys.stdin 一次讀完。
MLEMemory Limit Exceeded使用的記憶體超過題目限制,常見於陣列開太大。
OLEOutput Limit Exceeded印出太多內容,通常是無限迴圈或除錯輸出忘了刪。
RERuntime Error程式執行到一半出錯。C/C++ 常見的是陣列超出範圍、除以零;Python 是沒有處理的例外(例如 NameError),見下方「RE 常見回饋」與「用 Python 解題」。
IRInvalid Return程式用不正常的方式結束,例如 C/C++ 的 main 回傳非 0 的值,或 Python 呼叫 sys.exit(1)。
CECompile Error程式無法編譯,提交頁會顯示編譯器訊息。
IEInternal Error評測系統出了問題,與你的程式無關,通常需要管理員處理。
QU / P / GQueued / Processing / Grading提交正在排隊、準備或評測中,尚未完成。
ABAborted提交被中止,常見於管理員取消或重新評測。

計分方式

  • 每題的測試資料分成幾組,提交結果會列出每一組通過與否;題目頁與提交列表顯示的百分比就是通過的比例。
  • 題目的配分(計入個人統計)要全部測試資料通過才算得分;沒有全過的提交會保留通過比例,讓你知道離滿分多遠。
  • 同一題可以重複提交,以最好的一次為準。

模擬測驗

  • 在「模擬測驗」頁選一場,進入作答系統後按「開始檢測並開始計時」才開始計時;按下前可以先看注意事項。
  • 作答時間依該場設定(作答系統會顯示倒數);時間到自動結束,也可以提早交卷。
  • 每場模擬測驗每人只能作答一次;結束後在「模擬測驗」頁看各題分數。
  • 作答期間評測規則與一般提交相同(同樣的語言、時限與結果代碼)。

範例測試與自訂測試

範例測試頻率
1 / 1 s
自訂測試輸入上限
1 MiB
自訂測試頻率
1 / 3 s
  • 範例測試:登入後在題目頁按「執行範例」,用題目的範例輸入跑你的程式並比對範例輸出;Python 出錯時這裡看得到行號。
  • 自訂測試(自己給輸入)僅限 AA 競程課程學員。
  • 兩者都只是輔助除錯,不影響正式提交的分數;範例通過不代表正式評測會通過。

提交限制

程式碼長度
65,536 characters
同時排隊提交數
2
  • 正式評測使用每題頁面上標示的時間與記憶體限制。
  • 排隊限制只限制同時等待評測的提交數,不是每題可提交次數。

RE 常見回饋

回饋訊息常見原因
segmentation fault / bus error程式碰到不該碰的記憶體:陣列超出範圍、指標用錯、遞迴太深,或記憶體用太多。
floating point exception不合法的算術運算,例如整數除以零或模零。
std::bad_allocC++ 配置記憶體失敗,通常是 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__' 改成了別的字;這一行必須原封不動。
TLEPython 的迴圈比 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 直譯執行,不編譯