標籤:windows names std bat 自己 比較 time 樣本 color
目錄
- 經典代碼
- 樣本
- duipai.bat
- data.exe
- baoli.exe
- mine.exe
WARN!
#include <bits/stdc++.h>
在OI等裡面不一定能應用,下面只是為了減小長度而已
bits庫實際上就是#include <XXX>
了一堆而已
目錄
經典代碼
對拍.bat
:loopmakedata.exeK.exeKture.exefc a.out b.outif %errorlevel%==0 goto looppause
解釋
:loop
建立叫做loop
的標籤
makedata.exeK.exeKture.exe
運行makedata.exe,K.exe,Kture.exe
其中makedata輸出到x.in,然後K.exe從x.in讀入,輸出到a.out,Ktrue.exe從x.in讀入,輸出到b.out
fc a.out b.outif %errorlevel%==0 goto looppause
比較a.out b.out
fc是windows下面一個程式,簡單來說如果兩個檔案相同返回0,不同返回1
%errorlevel%
是一個變數,意思是上一行代碼的傳回值
如果 返回==0 跳轉到loop(第一列標籤)
如果 返回不等於0 跳過這句話,執行pause(暫停),然後程式結束
樣本duipai.bat
:loopecho %random%|data.exebaoli.exemine.exefc mine.out baoli.outif %errorlevel%==0 goto looppause
data.exe
輸出測試資料到in.in
#include <bits/stdc++.h>using namespace std;int main(){ int rands; freopen("in.in","w",stdout); cin>>rands; srand(rands);//隨機數種子,一會再說 cout<<rand()<<" "<<rand(); return 0;}
由於windowsCPP的特性,srand(time(0))
一秒只有一個種子,而自己的程式不會太慢,所以直接輸入一個種子即可
在echo %random%|data.exe
裡面,是%random%是一個隨機數(由duipai.bat
解析器cmd.exe
隨機,每次都是隨機的)
|
是管道運算,把前面命令應該顯示的東西作為標準輸入給後面的,echo XXX是顯示XXX
這句話意思是把%random%
(叫做random
的變數,在沒有手動聲明其值時,每次調用都是隨機數)輸入給data.exe
baoli.exe
一個已知正解的程式,比如包括暴力求解程式,別人、網上的正解等
#include <bits/stdc++.h>using namespace std;int main(){ int q,w; freopen("in.in","r",stdin); freopen("baoli.out","w",stdout); cin>>q>>w; int ans=0; if(q>0) { for(int i=1;i<=q;i++){ ans++; } }else{ for(int i=-1;i>=q;i--){ ans--; } } if(w>0) { for(int i=1;i<=w;i++){ ans++; } }else{ for(int i=-1;i>=w;i--){ ans--; } } cout<<ans; return 0;}
mine.exe
自己的程式或者測試的程式
為了顯示功能,這裡是隨機出錯。。
#include <bits/stdc++.h> using namespace std;int main(){ int q,w; freopen("in.in","r",stdin); freopen("mine.out","w",stdout); cin>>q>>w; srand(time(0)); int r=rand()%20; if(r>=10){ cout<<q+w+1; }else{ cout<<q+w; } return 0;}
最後雙擊duipai.bat
即可看到效果
windows對拍及其應用