【OI】 自動對拍與已有數據自評測

雜言

最近博客順序這麼亂,現在才寫個關於對拍的博客…
但我確實希望展示我認爲很方便的代碼
就當我是來水博客的吧


前言(dalao自動跳過)

都是windows下需要注意的,畢竟只瞭解一點點.bat,.sh還沒看過
windows下本文bat文件使用姿勢都大體是形如ck.bat prz
ck隨便改,prz爲程序名自行調整
注意開好文件(這我沒辦法自動化),剩下應該都自動化了
推薦使用順序是在操作目錄下Shift+右鍵選擇 在此處打開命令窗口 ,這樣來完成一系列操作當然是最方便的
根據需求自己微調一下bat


對拍

Windows下

大體框架來自這裏
要看註釋可以去那不過我覺得我優化的地方已經很多了
m代表make,r代表right,什麼都沒有就是需要對拍的啦(好廢話…)
放在目錄裏的文件形如 przm.cpp przr.cpp prz.cpp
要是錯了應該就直接gdb了,就沒寫del
記得開文件

@echo off  
g++ -g -o %1m %1m.cpp
g++ -g -o %1 %1.cpp
g++ -g -o %1r %1r.cpp
:AC
%1m
%1
%1r
fc %1.out %1r.out  
if errorlevel=1 goto WA
echo AC  
goto AC    
:WA  
echo WA
pause

Linux下

暫時全部來自這裏
鳴謝原作,如果不行的話通知我我會立刻刪除…

while true; do  
./make>tmp.in #出數據  
./tmp<tmp.in>tmp.out #被測程序  
./tmp2<tmp.in>tmp2.out #正確(暴力)程序  
if diff tmp.out tmp2.out; then #比較兩個輸出文件  
printf AC #結果相同顯示AC  
else  
echo WA #結果不同顯示WA,並退出  
#cat tmp.out tmp2.out  
exit 0  
fi #if的結束標誌,與C語言相反,0爲真  
done # while的結束標誌  

#BY NICK WONG 2014-08-29  
#在終端下,進入當前目錄,輸入"sh ./nick.sh",(其中nick.sh爲當前shell腳本名) '#'表示單行註釋  
#diff在兩文件相同時返回空串  

已有數據自評測

目前僅有windows下
好的我承認結構都是《數學一本通》-林厚從 的數據包裏的.bat裏來的,加上了自己的一些優化
放到數據包裏,在數據包裏的目錄開命令行好廢話…
記得開文件

@echo off
g++ -g -o %1 %1.cpp
if "%2"=="" goto loop
copy %1%2.in %1.in >nul
echo Problem Test
echo Data %1
type nul > enter
time<enter
%1.exe
time<enter
fc %1.out %1%2.out
del %1.in
del %1.out
del enter
del %1.exe
pause
goto end
:loop
for %%i in (0 1 2 3 4 5 6 7 8 9 10) do call %0 %1 %%i
:end

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章