「技巧」对拍
防挂分的爹
7.23 模拟赛打完:
大黄:这Noi赛制真**,T3 先交了次暴力,60pts,后来打了(他自以为的)正解,一分没有,为什么就不能取我最高分算啊
ok,对拍的用处就体现出来了:防止我们像大黄一样 * * 。
对拍是干什么的
对拍就是在防止自己代码打挂或者思路假而自己还不知道,所以自己随数造数据,用绝对正确的暴力和自己的“正解”代码各跑一遍,对比答案。
模板
造数据
随机数模板:
//<手动加范围>
#include <iostream>
#include <chrono>
#include <random>
using namespace std;
int main()
{
// 随机数种子
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
mt19937 rand_num(seed); // 大随机数
uniform_int_distribution<long long> dist(0, 1000000000); // 给定范围
cout << dist(rand_num) << endl;
return 0;
}
对拍
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
int main(){
system("g++ Bao.cpp -o Bao"); //暴力代码
system("g++ Jie.cpp -o Jie"); //“正解”代码
system("g++ data.cpp -o data"); //数据代码
int cnt = 0;
while(true){
system("./data > in.in"); //输入数据到in.in中
//system("/usr/bin/time -f \"%es,%MKB\" ./Jie < in.in > Jie.out");
//system("/usr/bin/time -f \"%es,%MKB\" ./Bao < in.in > Bao.out");
system("./Jie < in.in > Jie.out");
system("./Bao < in.in > Bao.out");
if(system("diff Bao.out Jie.out -Z")){
printf("Wa\n"); break;
}
printf("%d\n",++cnt);
}
return 0;
}