天天看点

信息学竞赛中的对拍

需要文件及其含义:

  • ​in.cpp​

    ​:产生输入数据的源文件;
  • ​std.cpp​

    ​:标程,即能产生正确数据但是会超时的源文件;
  • ​me.cpp​

    ​:检查的程序,即用于提交但是不确定对不对(所以拿来对拍)的源文件;
  • ​run.bat​

    ​:对拍脚本。

以下为一组示例:

run.bat

@echo off
:loop
    in.exe > in.txt
    me.exe < in.txt > me.txt
    std.exe < in.txt > std.txt
fc me.txt std.txt
if not errorlevel 1 goto loop
pause      

in.cpp

#include <bits/stdc++.h>
using namespace std;

mt19937 rng(time(NULL));

int random(int a, int b) {
    return rng() % (b - a + 1) + a;
}

int main() {
    int a = random(1, 100), b = random(1, 100);
    cout << a << " " << b << endl;
    return 0;
}      

std.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
    return 0;
}      

me.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    if (a + b > 130) cout << "hehe" << endl;
    else cout << a + b << endl;
    return 0;
}      

继续阅读