1. 程式人生 > >OJ提交結果的整理

OJ提交結果的整理

Waiting:你的程式剛剛提交,正在等待OJ評測你的程式。 Compiling:OJ正在編譯你的程式。 Accepted:OK!你的程式是正確的 ^_^。 Wrong Answer:你的程式執行的結果和正確結果不同。狀態頁面CASE那一覽顯示的是你的程式在第幾個樣例上出錯的。 Time Limit Exceeded:你的程式執行時間太長了,超過了對應題目的時間限制。 Memory Limit Exceeded:你的程式執行所用的記憶體太多了,超過了對應題目的限制。 Output Limit Exceeded:你的程式輸出了太多的內容了,超過了OJ的限制,輕檢查你的程式中是否有可能存在無限迴圈輸出。 Floating Point Error:Divide by 0,除0錯誤。 Segmentation Fault:有2中情況可能導致次錯誤: buffer overflow -- 緩衝區溢位,也就是你訪問 了非法記憶體,比如你神情了一個大小為2的陣列a,卻訪問了a[10000],或者在C/C++中訪問了空指標等等。 stack overflow -- 堆疊溢位,有可能你在c/c++程式的函式中神情了過大的空間,或者遞迴層次太多,導致堆疊溢位了,輕記住堆疊的大小為8192KB. Runtime Error:你的程式在執行的時候出錯了,異常終止了,導致這種狀態的情況有肯多,一般都是一些非法操作,比如檔案操作,Java中的網路操作等等。Java中Runtime Error的更詳細的敘述見下。另外C/C++中越界訪問函式中定義的陣列也會導致Runtime Error。 Restricted Function:你的程式呼叫了不該呼叫的函式,比如fork(),execv(),socket等等危險的函式,清牢記一點:在你的程式中只作與解決問題有關的事情,盡情其他的操作都會被OJ攔截下來。 Compilation Error:編譯錯誤,如果你的程式在本機能夠正常編譯,請在下面的編譯出錯怎麼辦檢視更詳細的解決辦法。 Presentation Error:你的程式執行的結果是正確的,但是格式和正確結果有點不一樣。比如中間多了回車或者空格,請仔細檢查程式的輸出部分,離AC就差一點點啦! Presentation Error的一般原因? PE就是沒通過。 沒通過就沒成績。 PE和wa, lte一樣。? 一般原因:? 1.格式問題要注意 每行最後要有回車,並且行末不能有多餘的空格。? 格式錯誤,請仔細檢查case末的空行、case間的空行、每一行後的空格,等這些地方,看與題目描述是否一致。? 2.答案正確,但格式不對。   ? 可能是多輸出了space/tab/return? 有人也說只有三種情況:? 1空行問題? 2大小寫問題? 3空格問題? 所以又pe說明你沒有根本錯誤,就是一些細節有錯誤。 下面是常見的OJ評判結果以及它們表示的意思: Queuing : 提交太多了,OJ無法在第一時間給所有提交以評判結果,後面提交的程式將暫時處於排隊狀態等待OJ的評判。不過這個過程一般不會很長。 Compiling : 您提交的程式碼正在被編譯。 Running : 您的程式正在OJ上執行。 Judging : OJ正在檢查您程式的輸出是否正確。 Accepted (AC) : 您的程式是正確的,恭喜! Presentation Error (PE) : 雖然您的程式貌似輸出了正確的結果,但是這個結果的格式有點問題。請檢查程式的輸出是否多了或者少了空格(' ')、製表符('\t')或者換行符('\n')。 Wrong Answer (WA) : 輸出結果錯,這個一般認為是演算法有問題。 Runtime Error (RE) : 執行時錯誤,這個一般是程式在執行期間執行了非法的操作造成的。以下列出常見的錯誤型別: ACCESS_VIOLATION 您的程式想從一些非法的地址空間讀取或向其中寫入內容。一般例如指標、陣列下標越界都會造成這個錯誤的。 ARRAY_BOUNDS_EXCEEDED 您的程式試圖訪問一個超出硬體支援範圍的陣列單元。 FLOAT_DENORMAL_OPERAND 進行了一個非正常的浮點操作。一般是由於一個非正常的浮點數參與了浮點操作所引起的,比如這個數的浮點格式不正確。 FLOAT_DIVIDE_BY_ZERO 浮點數除法出現除數為零的異常。 FLOAT_OVERFLOW 浮點溢位。要表示的數太大,超出了浮點數的表示範圍。 FLOAT_UNDERFLOW 浮點下溢。要表示的數太小,超出了浮點數的表示範圍。 INTEGER_DIVIDE_BY_ZERO 在進行整數除法的時候出現了除數為零的異常。 INTEGER_OVERFLOW 整數溢位。要表示的數值太大,超出了整數變數的範圍。 STACK_OVERFLOW 棧溢位。一般是由於無限遞迴或者在函式裡使用了太大的陣列變數的原因。顧名思義,stack overflow 就是是棧溢位了。在進行數值運算時,我們常常要和運算結果的溢位打交道。數值運算結果可能上溢(overflow),也可能是下溢(underflow)。不過棧的溢位顯然只可能是上溢,即棧空間被用完了。 要正確處理棧溢位採用以下辦法: (1)修正我們的程式,不要造成無窮遞迴或太深的遞迴。我們可以把某些遞迴程式碼非遞迴化,例如那個經典的 qsort ,最好就用非遞迴的演算法來實現,就比較皮實一點。 (2)修正我們的程式,不要定義過大的區域性變數,特別是在定義大結構、大陣列時要格外小心。有時我們可能會用 _alloca() 這樣的特殊函式直接在棧上分配空間,更要多加註意。可以定義成static (3)利用編譯器的特性,將程序允許的棧大小設定得大一些。例如可以採用 MSC 中的 /STACK 引數開關。 (4)對於那些還可能導致棧溢位的程式碼,採用 Microsoft 的結構化異常處理或標準的 C++ 異常處理機制,結合 _resetstkoflw() 進行處理。當然了,要是不嫌麻煩,我們也可以自己探測所用棧的大小,動態地檢測是否可能導致棧溢位,以避免可能的異常。 ...... 其他錯誤,包括C++標準庫/STL執行時庫錯誤等,這裡不再舉例。 Time Limit Exceeded (TLE) : 您的程式執行的時間已經超出了這個題目的時間限制。 Memory Limit Exceeded (MLE) : 您的程式執行的記憶體已經超出了這個題目的記憶體限制。 Output Limit Exceeded (OLE) : 您的程式輸出內容太多,超過了這個題目的輸出限制。 Compilation Error (CE) : 您的程式語法有問題,編譯器無法編譯。具體的出錯資訊可以點選連結察看。 System Error (SE) : OJ內部出現錯誤。由於我們的OJ可能存在一些小問題,所以出現這個資訊請原諒,同時請及時與管理員聯絡。 Out Of Contest Time : 超出比賽時間,這個資訊只有在比賽的時候才會出現。