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 not errorlevel 1 goto again
pause

建一个txt文件复制进去再改为bat文件,运行即可


第二种

我没用过因为比较麻烦而且效果并不让人满意
好处:能显示时间
坏处:麻烦,回显很让人不爽

需要开文件io

把下面那种的前三行system只留下程序名(比如data)并且把fc中的>nul去掉
代码就不贴了


第三种

刚找到的
好处:不用开文件io并且没有回显
坏处:码量比第一种略大
主要就是把第一种的cmd语句搬过来再加上>nul取消回显

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long double s,t,t2;
    while(1)
    {
        system("data.exe > in.txt");
        s=clock();
        system("std.exe < in.txt  > stdout.txt");
        t=clock();
        system("test.exe < in.txt > testout.txt");
        t2=clock();
        if(system("fc /W stdout.txt testout.txt > nul"))
            break;
        else printf("AC time used: std %.2lfms test %.2lfms\n",t-s,t2-t);
    }
    printf("WA time used: std %.2lfms test %.2lfms\n",t-s,t2-t);
    system("pause>nul");
    return 0;
}

原文地址:https://www.cnblogs.com/123789456ye/p/11026838.html

时间: 2024-10-09 05:11:01

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

对拍程序的写法

对拍程序的写法 作为一名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

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

在竞赛过程中一个对拍程序可以帮你排除许多错误, 如果担心自己写的正解被一些小数据卡掉, 我们通常会写个对拍程序来检查正解的正确性, 通过大量数据观察正解与暴力的输出是否相同. 我们首先拿出我们写的可能会超时但是可以保证绝对正确的暴力程序,称作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 ? 然后运