「杂项」对拍相关

对拍在考试时主要干的事就是对比 一定对但是暴力 和 似乎正解但不一定对 的两个程序的输出,来帮助检验自己的程序是否确实没有问题,减少挂分的发生

一般需要这几个东西:
image
不管 .in .out 和程序啥的,需要自己写的是这几个 .cpp 文件
建议专门开一个文件夹来存,比较方便

(此处各种命名只是个人习惯)

  • my.cpp 用来存自己需要检验正确性的程序
  • bl.cpp 暴力,需要保证一定对
  • mkd.cpp 随机数据生成器
  • pai.cpp 控制对拍过程

例:
noip模拟5 string 一题,可以用 sort 暴力和自己的其他想法对拍
mkd.cpp:

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

inline int rd(int x){ return 1ll*rand()*rand()%x; }
int n,m;

int main(){//按题意造数据
	srand(time(NULL));
	n=10; m=10;
	cout<<n<<' '<<m<<endl;
	for(int i=1;i<=n;i++)putchar('a'+rd(26)); puts("");
	for(int i=1;i<=m;i++){
		int a=rd(n)+1,b=rd(n)+1;
		if(a>b)swap(a,b);
		cout<<a<<' '<<b<<' '<<rd(2)<<endl;
	}
	return 0;
}

pai.cpp:

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

int main(){
	system("g++ my.cpp -o my");
	system("g++ bl.cpp -std=c++11 -O2 -o bl");
	system("g++ mkd.cpp -o mkd");
	//编译你的代码
	int T=0;
	while(++T){
		system("./mkd>in.in");
		system("./my<in.in>my.out");
		system("./bl<in.in>bl.out");
		//运行
		// "<in.in" 为从 in.in 读入
		// ">my.out" 为输出到 my.out
		if(system("diff my.out bl.out")){//判断是否正确
			puts("QAQ"); break;
		}
		else printf("OK %d
",T);
	}
	return 0;
}

基本就是这样,平时也可以刷题时不时拍拍,练下造数据啥的qwq

原文地址:https://www.cnblogs.com/zzzuozhe-gjy/p/14866344.html