在打acm比賽時,如果一個程序實在不知道錯在哪,而剩下時間還挺充足,對拍是一個很好的手段,對拍的意思就是當前你的一個程序交上去發現答案錯誤了,但又不知道錯哪,條件允許的話,你可以寫成另一個暴搜的程序得出答案,和你wa輸出的答案相匹配,看哪裏錯了。平時訓練也可以這麼找出你的wa程序和ac的程序之間的差別。下面就展示如何使用對拍。
另附:其實比賽開始前就可以把對拍那三句話寫好,還有三個txt建好,比賽時確實要用到對拍就在程序裏寫上freopen就行了
第一步:在e盤新建一個“duipai”文件夾,(在哪個盤哪個文件夾裏將新建,這個無所謂,看個人方便)
接下來我要生成個測試數據,上代碼(這個測試數據按照題目要求自己造,也可能造不出來)
運行上面這個程序後,duipai裏面就會生成一個data.txt 的文本文檔
打開data.txt ,會有許多測試數據,
接下來,會用到兩個程序,一個是你寫的錯誤程序,另一個是答案絕對正確的或者是爆搜的(TLE),分別重定向到duipai裏,錯誤程序輸出爲out2,正確程序輸出爲out1,
錯誤的
正確的程序
分別運行這兩個程序後,duipai文件夾裏會多出兩個txt,out1.txt,out2.txt
下面是最重要的一步了
新建一個txt
在duipai.txt裏面輸入
保存後,將duipai.txt的後綴改成duipai.bat
然後運行這個bat ,就可以看出對拍差距了
關於對拍結果的顯示:如果輸出結果只有Y 和 N並且一行佔一個,那麼給出不一樣的所在行後很難找到到底是哪一個錯了。
所以最好在輸出的時候把讀入的數據一起輸出,這麼輸出文件的複雜度就大了,比較程序容易找出不一樣的地方。