在比赛中,可以写两个程序,一个是保证答案正确的暴力程序,另一个则是要提交的答案程序,
为了检验答案程序的正确性,可以生成随机数据,分别在两个程序上测试,检查输出答案是否一致
注:生成随机数据的程序要根据题目给出的数据格式,具体问题具体分析,这里只给出一个示例
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<algorithm>
typedef long long ll;
int n = 1000, m = 1000,k = 1000;
int main()
{
printf("%d %d %d", n, m,k);
for(int i = 1; i <= k; ++i)
{
int cho = rand()%1;
char ch = (cho == 0?'R':'S');
int x = rand()%(std::min(n, m)-1)+1;
ll k = rand();
printf("%c %d %lld
", ch, x, k);
}
return 0;
}
接下来是对拍程序,用来比较两个程序的输出答案是否一致,其中data.cpp是随机数据生成器
#include<cstdio>
#include<cstdlib>
int main()
{
system("g++ dp1.cpp -o a ");
system("g++ dp2.cpp -o b ");
system("g++ data.cpp -o data ");
int cntcr = 0, cntwr = 0;
while(1)
{
system("./data >data.in");
system("./a <data.in >1.out");
system("./b <data.in >2.out");
if(system("diff 1.out 2.out > /dev/null"))
{
printf("%d Wrong Answer
",++cntwr);
}else
{
printf("%d Accepted
", ++cntcr);
}
}
return 0;
}