对拍程序的写法

Posted heanda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对拍程序的写法相关的知识,希望对你有一定的参考价值。

对拍程序的写法

作为一名oier,考试不对拍,这跟直接见祖宗有什么区别
这里记录一下对拍程序的写法。
首先我们需要一个data.cpp程序,也就是数据生成器

int main()
{
    srand(time(NULL));
    for(R int i = 1; i <= 10; ++i)
    {
        ll x = (rand()<<15|rand()), y = (rand()<<15|rand());
        cout<<x<<" "<<y<<endl;
    }
    return 0;
}

然后我们需要一个暴力程序,这里叫它baoli.cpp,因为这里举的例子不够明显,故用文字说明

int main()//暴力
{
    for(R int i = 1; i <= 10; ++i)
    {
        ll x, y;
        cin >> x >> y;
        cout<<x + y<<endl;
    }
    return 0;
}

然后需要一个高分但是不保证正确率的程序,这里叫它a.cpp

int main()//正解
{
    for(R int i = 1; i <= 10; ++i)
    {
        int x, y;
        cin >> x >> y;
        cout<<x+y<<endl;
    }
    return 0;
}

将三个程序运行得到的三个.exe文件,就是我们需要操作的。
接下来写一个对拍程序

:again
data > 1.in
baoli < 1.in > 1.out
a < 1.in > 2.out
fc 1.out 2.out
if not errorlevel 1 goto again
pause

这里面(>)就是把结果传到另一个文件内,(<)就是把另一个文件的东西传过来
还是很容易理解的,(fc)则是对比两个文件有没有差异
如果没有差异则继续,有则停下,有不同的数据会保留在data存入的那个文件内
直接伴着数据差错即可。

以上是关于对拍程序的写法的主要内容,如果未能解决你的问题,请参考以下文章

对拍程序的写法

技巧算法竞赛中对拍程序的写法

c++对拍程序写法

模板对拍程序

ACM之对拍

对拍(windows环境)