- Accepted 通過!(AC)
- Wrong Answer 答案錯。(WA)
- Runtime Error 程序運行出錯,意外終止等。(RE)
- Time Limit Exceeded 超時。程序沒在規定時間內出答案。(TLE)
- Presentation Error 格式錯。程序沒按規定的格式輸出答案。(PE)
- Memory Limit Exceeded 超內存。程序沒在規定空間內出答案。(MLE)
- Compile Error 編譯錯。程序編譯不過。(CE)
【黑盒測試】
算法競賽一般采取黑盒測試:事先准備好一些測試用例,然后用它們測試選手程序,根據運行結果評分。除了找不到程序(如程序名沒有按照比賽規定取,或是放錯位置)編譯錯等連程序都沒能運行的錯誤之外,一些典型的錯誤類型如下:
在一些比較嚴格的比賽中,輸出格式錯被看成是答案錯,而在另外一些比賽中, 則會把二者區分開。在運行時,除了程序自身異常退出(例如,除0、 棧溢出、非法訪問內存、斷言為假、main函數返回非0值)外,還可能是因為超過了評測系統的資源約束(如內存限制、最大輸出限制)而被強制中止執行。有的評測系統會把這些情況和一般的運行錯誤區分開,但在多數情況下會統一歸到 “運行錯”中。
需要注意的是,超時不一定是因為程序效率太低,也可能是其他原因造成的。例如,比賽規定程序應從文件讀入數據,但所寫程序卻正在等待鍵盤輸入。其他原因包括:特殊數據導致程序進入死循環、程序實際上已經崩潰卻沒異常退出等。
如果上述錯誤都沒有,那么恭喜你, 你的程序通過了測試。在ACM/ICPC中,這意味着你的程序被裁判接受(accepted, AC),而在分測試點的比賽中,這意味着你拿到了該測試點的分數。
需要注意的是,一些比賽的測試點可以給出 “部分分”——如答案 正確但不夠優,或者題目中有兩個任務,選手只成功完成了一個任務等。不管怎樣、 得分的前提是不超時、沒有運行錯。只有這樣,程序輸出才會參與評分。
總結:
一:WA 錯誤答案,有數據未通過
二:TLE 超時,時間超過了題目所限制的時間,一般是時間復雜度在一億以內,基本沒啥問題,一億不好說,但十幾億更多就一定不行了;此時需要優化自己的算法,降低時間復雜度
三:PE 提交格式錯誤,換個編譯器,或者是看代碼中輸出中是否與答案差個空格 逗號 換行啥的
四:提交失敗 這個與本網站的服務器狀態有關,比如POJ 的網站崩了,掛在POJ上的一些OJ題目都不能提交
五:內存爆了,這個屬於題目數據過大,導致運行內存超出,比較好的辦法及常用的辦法是:想辦法降低對內存的占用,如優化一些不必要的過程,或者是經常的邊輸入邊輸出(時常會用到)
六:runtime error 運行時發生錯誤,這個問題往往就是程序跑到一半不能跑了,可能發生了數組越界,一般是這個,這時候只需要將數組開大一點就好了,數組一般可以開到1e9,