对拍程序

在比赛中,可以写两个程序,一个是保证答案正确的暴力程序,另一个则是要提交的答案程序,
为了检验答案程序的正确性,可以生成随机数据,分别在两个程序上测试,检查输出答案是否一致
注:生成随机数据的程序要根据题目给出的数据格式,具体问题具体分析,这里只给出一个示例

#include<bits/stdc++.h>
using namespace std;
mt19937 rd((unsigned )new char);
int rr(int l, int r){
	uniform_int_distribution<> d(l, r);
	return d(rd);
}
int n = 5, q = 5;
int main(){
	freopen("data.in" ,"w", stdout);
	printf("%d\n", n);
	for(int i = 1; i <= n; ++i){
		for(int j = 1; j <= 3; ++j){
			printf("%d ", rr(1, 10));
		}
		puts("");
	}
	printf("%d\n", q);
	for(int i = 1; i <= q-1; ++i){
		int opt = rr(1, 7), l = rr(1, n), r = rr(l, n), v = rr(1, 10);
		printf("%d %d %d ", opt, l, r, v);
		if(4 <= opt && opt <= 6){
			printf("%d ", v);
		}
		puts("");
	}
	int opt = 7, l = rr(1, n), r = rr(l, n);
	printf("%d %d %d\n", opt, l, r);
	return 0;
}

接下来是对拍程序,用来比较两个程序的输出答案是否一致,其中data是随机数据生成器

#include<bits/stdc++.h>
#define s(x) system(#x)
using namespace std;
int main(){
  
	while(1){
		s(data);
		s(c);
		s(d);
		if(s(diff 1.out 2.out)){
			printf("WA");break;
		}
	}
}
#include<bits/stdc++.h>
#define s(x) system(#x)
using namespace std;
int main(){
	while(1){
		s(data);
		s(c);
		s(d);
		if(s(fc 1.out 2.out)){
			printf("WA");break;
		}
	}
}
posted @ 2020-08-03 15:09  CDsidi  阅读(188)  评论(2编辑  收藏  举报