对拍程序的写法

对拍程序的写法

作为一名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存入的那个文件内
直接伴着数据差错即可。

原文地址:https://www.cnblogs.com/heanda/p/12391253.html

时间: 2024-08-05 11:15:14

对拍程序的写法的相关文章

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

在竞赛过程中一个对拍程序可以帮你排除许多错误, 如果担心自己写的正解被一些小数据卡掉, 我们通常会写个对拍程序来检查正解的正确性, 通过大量数据观察正解与暴力的输出是否相同. 我们首先拿出我们写的可能会超时但是可以保证绝对正确的暴力程序,称作bf.exe, 然后拿出我们写的待检测的正解,称作std.exe, 接着我们写一个随机数据生成程序,用来一次生成一组自制随机数据用来检测输出,称作gen.exe, 然后我们来写一个利用windows批处理的对拍程序. 在你的程序的根目录下新建一个称作chec

对拍程序讲解及源码举例

对拍程序 一.介绍 在做题或者正式比赛过程中总会把水题做水做乱,但因为样例有坑所以直接过了样例,然后拿去评测结果发现全WA.那如何在这种情况下检查自己程序或算法的正确性呢?对拍是一个简便省事的方案. 所谓“对拍”,顾名思义,就是让两者相互比对.所谓“两者”,一是你要测试的程序,二是一个答案在该程序在一定范围(时间/空间)内结果必定正确的程序(一般是用暴力求解的程序). 两个程序准备好编译好了以后,就可以开始准备测试用的输入样例了.但是输入样例要是人为准备起来的话肯定浪费时间还费脑,更别提在正式比

[zt]手把手教你写对拍程序(PASCAL)

谁适合看这篇文章? ACMERS,OIERS或其它参加算法竞赛或需要算法的人 对操作系统并不太熟悉的人 不会写对拍的人 在网上找不到一个特别详细的对拍样例的人 不嫌弃我写的太低幼的人 前言 在NOIP或是ACM比赛中,一个对拍程序的重要性不言而喻,再有一个效率较低的正确程序下(这是大前提,如果你连一个绝对正确的程序都无法保证的话,那还是不要考虑对拍了),他可以检验你的“高级算法”是不是正确.当然,正确性是完全无法保证的.一般对拍都会用随机函数生成数据,边界条件极限条件极有可能遇不上,也会有很多对

手把手教你写对拍程序(PASCAL)

谁适合看这篇文章? ACMERS,OIERS或其它参加算法竞赛或需要算法的人 对操作系统并不太熟悉的人 不会写对拍的人 在网上找不到一个特别详细的对拍样例的人 不嫌弃我写的太低幼的人 前言 在NOIP或是ACM比赛中,一个对拍程序的重要性不言而喻,再有一个效率较低的正确程序下(这是大前提,如果你连一个绝对正确的程序都无法保证的话,那还是不要考虑对拍了),他可以检验你的“高级算法”是不是正确.当然,正确性是完全无法保证的.一般对拍都会用随机函数生成数据,边界条件极限条件极有可能遇不上,也会有很多对

【模板】对拍程序

前言 考试都考了几十套了,一直都没有对拍过,贪心题要么就写不出来,要么就手动造几个数据拍一下. 今天心情不很好,不怎么想写题,就到处扒了我觉得稍微好看一点儿也好背一点儿的对拍. 配套的是a+b代码和数据生成代码,可以试用一下.随机数据生成比较水,我还没研究过,但是能用也就将就了吧. 我几乎敲了5遍才背下来这段对拍... 代码 对拍程序 库函数不能省 #include<cstdio> #include<cstdlib> #include<ctime> int main()

C++对拍程序

考场没心态,担心程序写挂 这时写一个对拍程序就可以大大降低你的担心 所以背个板子就可以了: #include<iostream> #include<cmath> #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<algorithm> #include<windows.h> using namespace

Windows系统对拍程序

Windows系统对拍程序,其中包含c++11用法,请使用c++11编译. 此对拍程序自动使用g++对源代码进行编译.如果出现找不到g++错误,请将g++所在目录添加至系统的环境变量列表中. 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <ctime> 5 6 // 设置区 7 namespace Settings { 8 const int MAX_LEN

[教程]对拍程序(linux)+ 考试(做题)生成数据 + 提交注意事项

对拍程序(linux) 使用说明: ? ? ? 这里使用compare.cpp程序来对拍的,没有用bash脚本 ? ? ? 使用时,先编译4个文件(std中放正确的标程/暴力程序 my中自己的程序? rand是用来产生数据的) ? ? ? ? ? ? g++ compare.cpp -o duipai ? ? ? ? ? ? g++ my.cpp -o my ? ? ? ? ? ? g++ rand.cpp -o rand ? ? ? ? ? ? g++ std.cpp -o std ? 然后运

c++对拍程序写法

以下方法所有程序都必须在同一个文件夹(或者你想打一长串文件路径也行) std是标程,test是暴力(反正要是对的),data是造数据的 第一种 好处:简单易写,不用开文件io 坏处:不能显示运行时间 ps:/W 是忽略空格和空行(一般评测的做法) @echo off :again data>in.txt std<in.txt>stdout.txt test<in.txt>testout.txt fc /W stdout.txt testout.txt >nul if n