今天下午的时候听yyy学长讲了讲对拍,下面总结一下下
对拍是什么?
大概就是拿你自以为的正解与你实实在在写的暴力,进行输出比较。相当于与标答进行比较(前提你的暴力是正确的)然后发现不同的地方,对“正解”程序进行修改,这样可以提高你算法的正确性。
怎么对拍呢?
首先你要有输入数据吧,而且必须是随机的,按照题目要求的输入。那么我们就需要一个make.cpp啦,其作用就是生成随机数据
然后把“正解”和暴力(都要用文件输入输出哦,输入文件一样但输出文件不能一样)搞出来,和make放在一个文件夹里
接着你就可以人工比较啦
但怎么可能那么弱智,如果要拍十几万的数据呢?
所以我们需要一个叫pia.bat的鬼东东,帮我们进行输出的比较,并且在答案有不同的情况时反馈给我们
最后对拍就搞完啦~,具体操作细节如下
生成随机数据的cpp怎么写?
这个主要看题目要求(数据的格式及范围)
重点是这个srand(time(0)),给随机函数一个种子(就是取计算机当前的时间)
然后输出文件这样写
freopen(" .in","w",stdin);
pia.bat怎么搞?
就记住模板就好啦
@echo off
:loop
make //随机生成数据的cpp的名字
bf //暴力的名字
dance //正解的名字
fc dance.out bf.out //比较两个输出
if errorlevel 1 pause //如果不同,就停下
goto loop //否则继续拍
细节问题
就是不要拍太久了,差不多就行了。等会你拍久了,就会发生玄学错误,比如电脑死机,发出bibibibi的声音等,你最好别在考场上这样搞