跟着蓝书上面学的对拍。
以下摘自蓝书
假设我们已经编好了三个程序。
1.自己编写好的“正解”,名字为 sol.cpp。
该程序从 data.in中读入数据,并输出答案到 data.out。
2.自己写的暴力,名为 bf.cpp。
该程序从 data.in读入数据 输出到 data.ans。;
3.随机数据生成程序,名为 random.cpp。
该程序输出随机数据到 data.in中
依次编译运行三个程序,得到三个可执行文件,例如在 windows 下得到 sol.exe bf.exe random.exe。
所以以下就是代码了。
#include<bits/stdc++.h>
using namespace std;
int main()
{
for(int T=1;T<=10000;T++)
{
system("random.exe");
double st=clock();
system("sol.exe");
double ed=clock();
system("bf.exe");
if(system("fc data.out data.ans"))
{
puts("Wrong Answer");
//return 0;
}
else { printf("Accept,测试点 #%d, 用时 %.5lfms\n",T,ed-st);}
}
return 0;
}
对于随机生成数据的程序。
(两个很好的数据生成方法的博客) strand() 和 rand()
一些很好的方法 避免重复
至于一些很强的数据生成 树 和 图 ———— (待学)
简单的随机数:
#include<bits/stdc++.h>
using namespace std;
int main()
{
//freopen("","r",stdin);
freopen("data.in","w",stdout);
srand(time(0));
cout<<rand();
return 0;
}
对拍在考场的时候有重要的应用,是 oier的重要工具,因此要熟练快速的应用,数据生成要考虑清楚。
对拍保平安