碎碎念

对于我这样精通暴力算法的菜鸡,怎么能不学学对拍(●ˇ∀ˇ●)。

gXnW9.jpg

数据制造

建立文件$maker.cpp$插入以下代码

#include<bits/stdc++.h>
#define random(n,m) (rand()%(m-n+1)+n)
using namespace std;
int main(){
    srand(time(0)); 
    freopen("A.in","w",stdout);
    /*
    输出数据到A.in:
    printf("%d %d",random(1,233),random(1,233)); 
    */ 
    return 0;
}

解释一下里面几个神奇的函数:

①$rand()$返回一个随机数,可以通过取模和加减控制大小。

​ 假如我们想要得到一个$n-m$的随机数:

​ 可以输出$rand()\%(m-n+1)+n$

​ 将其宏定义为$random(n,m)$方便调用。

②$srand()$ 提供随机数种子啥的,不懂,反正很重要。

③$time()$返回$1970$年$1$月$1$日午夜开始到现在逝去的秒数,提供不同种子。

对拍程序

建立文件$work.cpp$插入以下代码

#include<bits/stdc++.h> 
using namespace std;
int main(){
    for(int i=1;;i++){//一直拍 
        printf("Case %d\n",i);//输出对拍编号
        system("maker.exe");//制造数据
        system("AC.exe");//运行正确程序
        system("WA.exe");//运行待对拍程序
        if(system("fc WA.out AC.out"))//比较文件输出
        system("pause");//不同停止对拍
        system("cls");//清空屏幕
    }
    return 0;
}
注意

在正确的程序中插入

freopen("A.in","r",stdin);
freopen("AC.out","w",stdout);

在待对拍的程序中插入

freopen("A.in","r",stdin);
freopen("WA.out","w",stdout);

撒花★,°:.☆( ̄▽ ̄)/$:.°★

感谢Sanapri巨佬提供的模板$QwQ$