zoukankan      html  css  js  c++  java
  • 对拍

    流程

    如果有错误可以指出

    首先要有待测程序sol.exe与绝对正确的std.exe
    这两个可执行文件都被要求有生成输出文件的作用(不重名)。

    其次是数据生成器,一般生成随机数据,必要时写特殊数据生成器。
    它被要求可以生成输入文件,输入文件中的数据应当满足一定标准。

    最后是对拍器,对拍器应能代替人手进行以下流程:
    1.造数据
    2.运行sol.exe
    3.运行std.exe
    4.对比输出文件,并显示错误。
    5.从第1步开始

    eg

    造数据……
    #include<bits/stdc++.h>
    #include<ctime>
    using namespace std;
    
    int random(int n) {
    	return ((long long)rand() * rand() )% n;
    }
    
    void make_arr(int n) {
    	for(int i=1;i<=n;++i) printf("%d ",random(1001));
    	putchar('
    ');
    }
    
    void make_qus(int q,int n) {
    	for(int i=1;i<=q;++i) {
    		int op=random(2);
    		int x=random(n)+1, y=random(n)+1;
    		if(y<x) swap(x,y);
    		printf("%d ",op);
    		if(op==0) {
    			int k=random(1001);
    			printf("%d %d %d
    ",x,y,k);
    		}
    		else {
    			printf("%d %d
    ",x,y);
    		}
    	}
    }
    
    int main() {
    	freopen("data.in","w",stdout);
    	srand((unsigned)time(0));
    	int n=random(101)+1;
    	printf("%d
    ",n);
    	make_arr(n);
    	int q=random(106)+1;
    	printf("%d
    ",q);
    	make_qus(q,n);
    	fclose(stdout);
    	return 0;
    }
    
    对拍
    #include<bits/stdc++.h>
    #include<ctime>
    using namespace std;
    int main() {
    	for(int i=1;i<=50;++i) {
    		system("random.exe");
    		int st=clock();
    		system("sol.exe");//暴力
    		int ed=clock();
    		system("std.exe");//正式代码
    		cout<<"测试点 "<<i<<" :";
    		if(system("fc data.out std.ans")) {
    			cout<<"Wrong Answer
    ";
    			return 0;
    		}
    		else {
    			cout<<"Accepet
    "<<"Time:"<<ed-st<<'
    ';
    		}
    	}
    }
    
  • 相关阅读:
    Python循环语句
    Python简单的语句组
    Jedis 之 初始<一>
    微信小程序登入流程
    微信小程序发起请求
    django数据库迁移时候异常
    Git常用命令总结
    微信小程序自定义组件
    POJ3345 Bribing FIPA
    POJ1947 Rebuilding Roads
  • 原文地址:https://www.cnblogs.com/Arielzz/p/14127818.html
Copyright © 2011-2022 走看看