OJ常見問題及必須認識的對拍處理水題

2022-09-07 12:54:08 字數 3470 閱讀 2738

hduoj:

q: online judge(以下簡稱oj)支援哪些語言?

a: 目前為止,hdoj支援c、c++、pascal和j**a四種語言。

q: 有什麼條件判斷我的程式是在oj上執行嗎?

a: 您可以使用online_judge這個條件定義。下面是使用舉例: 

c/c++

#ifdef online_judge

此間的語句只有在oj上的才會被編譯

#endif

pascal

此間的語句只有在oj上的才會被編譯

q: 在oj上我能使用哪些輸入輸出?

a: hdoj上只能使用標準輸入輸出,您的程式不允許操作檔案,否則將被判為'runtime error'或者'wrong answer'。

比如要通過1000這個題目,您可以使用以下幾種形式的程式:

c++ **:

#include

using namespace std;

int main()

c **:

#include

int main()

pascal **:

program p1000(intput, output);

var i, j : integer;

begin

while not eof(input) do

begin

readln(i, j);

writeln(i + j);

end;

end.

j**a **:

import j**a.util.*;

class sum}}

或者import j**a.util.*;

public class main}}

關於j**a的特別說明:

1、hdoj上使用的是jdk 1.50 update 8多國語言版。

2、您提交的j**a程式必須是單個檔案的,也就是所有的類必須寫在乙個檔案裡。但是必須有乙個類的裡面必須包含乙個名字為'main'的靜態方法(函式),這個方法是程式的入口。

3、如果您將主類申明為public公有類,則這個類名必須是'main'(注意大小寫,請參看第二個程式)。

4、每個題目對於j**a程式的時間和記憶體限制一般都會放寬的。但是即便如此,有些題目還是不適合用j**a來解,對於這些題目我們建議您使用編譯性語言來解。

q: 我提交了程式,oj回覆的那些評判結果是什麼意思?

a: 下面是常見的oj評判結果以及它們表示的意思:

queuing : 提交太多了,oj無法在第一時間給所有提交以評判結果,後面提交的程式將暫時處於排隊狀態等待oj的評判。不過這個過程一般不會很長。

compiling : 您提交的**正在被編譯。

running : 您的程式正在oj上執行。

judging : oj正在檢查您程式的輸出是否正確。

accepted (ac) : 您的程式是正確的,恭喜!

presentation error (pe) : 雖然您的程式貌似輸出了正確的結果,但是這個結果的格式有點問題。請檢查程式的輸出是否多了或者少了空格(' ')、製表符('\t')或者換行符('\n')。

wrong answer (wa) : 輸出結果錯,這個一般認為是演算法有問題。

runtime error (re) : 執行時錯誤,這個一般是程式在執行期間執行了非法的操作造成的。以下列出常見的錯誤型別:

error'。

迴圈變數i定義在for語句塊之內"for(int i=0...)"也會出錯。

在g++/gcc中itoa不是乙個ansi函式,但是在vc/vc++中是的。

a: 這種情況一般只會出現在內部比賽中。您登入的那個是hdoj的練習賬號,不是那場比賽的賬號。當系統就那場內部比賽要求您進行身份認證時,請輸入正確的比賽賬號和密碼登入就行了。

注意:瀏覽器所有hdoj相關頁面被關閉或者您長期(一般是20分鐘)處於未操作狀態的時候,您的所有認證將失效,這時您只要重新登入就行了。

q: 為什麼我用scanf/printf的組合能得到'ac'的程式換成cin/cout就得到了'tle'?

a: 一般情況下,c語言執行時i/o函式比c++的效率高一些,所以處理大資料量的時候,建議使用scanf/printf組合。

q: 我用borland c++ 3.1或者borland pascal 7.0寫程式的,那麼我如何才能避免得到'compilation error'?

a: 我們伺服器上使用的是borland delphi 7編譯器。您需要注意以下幾個方面:

q: 如何使用64位整數型別?

a: 伺服器支援64位有符號和無符號型別的整數。

求 1+2+3+……+n = ?

資料生成器:

#include#include#includeint main()

//編譯執行後,生成rand.exe可執行檔案  然後在批處理檔案中 直接呼叫 rand.exe>data.in即將上邊的輸出結果重定向到data.in檔案中

暴力程式:演算法 是直接從1加到n,執行n次迴圈 時間複雜度為 o(n)

#include#includeint main()

printf("%d\n",sum);

return 0;

}

//編譯執行後,生成std.exe可執行檔案  然後在批處理檔案中 直接呼叫 std.exestd.out即將從data.in中獲取輸入,然後將輸出結果重定向到std.out檔案中

高效演算法: 演算法為  1+2+……+n = n*(n+1)/2,   時間複雜度為o(1)

#include#includeint main()

//編譯執行後,生成my.exe可執行檔案  然後在批處理檔案中 直接呼叫 my.exestd.out即將從data.in中獲取輸入,然後將輸出結果重定向到my.out檔案中

批處理檔案 test.bat 內容如下

@echo off  

:loop

rand.exe>data.in

std.exestd.out

my.exemy.out

fc my.out std.out

if not errorlevel 1 goto loop

pause

goto loop

最後將這三個.exe檔案和批處理檔案放到同乙個目錄下 執行批處理檔案即可

if的用法及常見問題

1 if簡單的用法 1 if 格式 if 表示式 語句a 語句b 功能 如果表示式為真,執行語句a和語句b 如果表示式為假,只執行語句b 由此可見if只能控制乙個語句的執行與不執行,如果想要控制多個語句就必須把這些語句用 括起來。if else if else 格式 if 1 語句a else if...

訊息佇列的常見問題及解決

服務間解耦 提高服務併發 效能 突發流量削峰 服務間解耦 微服務系統業務之間相互依賴,各種呼叫錯綜複雜,如果不能良好對服務進行解耦那乙個服務的可用性 併發都會受到其他服務的影響。在沒有引用mq的之前服務呼叫大概是這些步驟 圖上的a服務是直接呼叫的,這是沒啥問題的,但是服務上線後要迭代更新的麻,這個時...

selenium的常見問題及解決辦法

1.當元素存在明顯id name class或使用find element by 等方法有報錯。原因是以下幾點 a.沒有延時等待 b.存在多個窗體時,id不是當前焦點窗體對應的屬性 c.存在巢狀frame,需要switch後再定位 2.滑鼠事件 首先呼叫actionchains,語句為 from s...