ACM 中的對拍程式

2022-05-31 01:36:06 字數 847 閱讀 8765

所謂對拍,就是隨機生成資料,然後用乙個肯定正確的暴力演算法的程式,去測試乙個要提交的程式。

由於比賽中一般使用 linux 系統,所以本篇部落格的**都是 linux 下的程式**。

其實最簡單的方式是寫指令碼。

這裡介紹的是用選手最熟悉的 c++ 語言寫對拍程式。

假設要提交的程式為 sol.cpp,暴力的程式為 bf.cpp,隨機資料生成器 random.cpp。

首先編譯這三個程式,得到 sol,bf,random。

一種簡單的方法就是先生成資料,然後暴力程式和待測試程式分別執行,比較結果。

生成資料,輸出到 data.in

./random > ./data.in
先執行暴力程式,結果輸出到 data.out

./bf < ./data.in > ./data.out
然後執行待測試程式,結果輸出到 data.ans

./sol < ./data.in > ./data.ans
然後比較兩個結果是否相同

diff ./data.out ./data.out
上述方法的缺點是無法統計時間。

於是就有了以下的對拍程式。

#include using namespace std;

int main() else

}return 0;

}

將上述所有檔案放在同一目錄下,編譯執行對拍程式就可以對拍。

《演算法競賽高階指南》 李煜東 著

ACM程式對拍

刷過acm題的同學應該都有這種體會,感覺自己已經考慮的很充分了,但就是一直wa,這時候,如果有乙份能夠保證100 正確的 再加上題目資料比較好利用隨機數創造時,便可以使用對拍來找到錯在哪些資料上了。我們需要三個exe檔案加乙個bat檔案再加兩個txt檔案。首先我們先建立乙個資料夾,在資料夾裡新建乙個...

ACM程式對拍

有時候在oj刷題目的時候,總是會遇到不知名bug,題目總不能ac,自己測試的一些資料又都能得出正確的結果,又或是直接暴力會tle,改了演算法,但是仍然wa,這時候進行程式對拍測試資料不失為乙個好辦法。程式對拍主要是通過資料生成器生成隨機資料,然後與正確程式跑出來的結果進行比對,雖然有時候資料很難構造...

對拍程式的寫法

每次對拍都是查這裡。一來二去就會寫了。由於對windows系統並不了解 linux就更不了解了 所以口胡可能有紕漏歡迎指正。首先新建乙個資料夾 對拍 這個資料夾叫什麼放在哪都無關緊要 在這個資料夾下放入製造資料的程式data.exe,你的程式test.exe,標程std.exe。其它檔案在這個資料夾...