「技巧」对拍

防挂分的爹

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



注:摘抄于学长的博客csdn

posted @ 2024-07-24 09:31  Aqr_Rn  阅读(53)  评论(1编辑  收藏  举报