天天看點

資訊學競賽中的對拍

需要檔案及其含義:

  • ​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;
}      

繼續閱讀