对拍是一个OIer的基本功,特别是对于OI赛制的比赛,想要多水分,对拍是一个必须学会的技巧。(一边A的神犇和手模逆天数据的大佬请出门右转)
对拍程序一般由随机数发生器,对拍程序组成。
随机数发生器
(就是用来造数据的) 需求库: include<ctime>(windows)||include<time.h>(Linux) include<cstdlib> 常用函数 srand(time(NULL)):可以为rand函数提供不同的种子值,进而产生不同的随机数序列。 rand():产生随机数。
1 #include<ctime> 2 #include<cstdio> 3 #include<cstdlib> 4 int a,b; 5 int main(){ 6 srand(time(0)); 7 a=rand(),b=rand(); 8 printf("%d %d ",a,b); 9 return 0; 10 }
!可以用modx控制随机数范围。
对拍程序
控制暴力和伪正解跑起来,比对错误。 需求库: include<windows.h> 常用函数: system("???>???.in") 把随机数发生器的生成数据导入.in中; system("???<???.in>??.out"> 把.in中的数据输入进程序并将输出结果导入.out中; system("fc???.out???.out"> 比较两个.out文件中的数据,并返还一个bool值;
1 #include<cstdio> 2 #include<windows.h> 3 int main(){ 4 int t=100; 5 while(t--){ 6 system("maker>000.in"); 7 system("zj<000.in>001.out"); 8 system("bl<000.in>002.out"); 9 if(system("fc 001.out 002.out")){puts("WOW!");break;} 10 }
11 system("pause"); 12 return 0; 13 }
参考:
http://hzwer.com/860.html
百度百科