zoukankan      html  css  js  c++  java
  • 对拍

    鉴于昨天noi赛制不能看分导致我使用了多次对拍,今天来整理一下对拍的知识

    预备知识

    bash

    bash,指的linux常用的shell脚本语言。这个知道最好,不知道也无伤大雅。 bash就是把在terminal中的命令放到一个文件中,便于执行。 bash的文件名一般为*.sh,运行方法为在terminal中,输入命令bash *.sh即可。

    c++随机数

    我们使用srand()rand()来制造随机数。

    #include <bits/stdc++.h>
    using namespace std;
    int main(){
        srand(time(0));
        cout<<rand()%100;
    }
    

    产生一定范围随机数的通用表示公式是:

    ([0,n))rand()%n;

    ([a,b))(rand()%(b-a))+a;

    ([a,b])(rand()%(b-a+1))+a;

    ((a,b])(rand()%(b-a))+a+1;

    shell随机数

    for((i=1;i<=100;i++)); 
        do 
    	random=$((RANDOM%1000)); 
    	echo $random; 
        done
    

    开始

    朴素算法|标程

    朴素算法即暴力算法,可以自己打,也可以找到题解来进行对拍。 这里为std.cpp

    错误算法

    错误算法极为你自己的算法。 即为wrong.cpp

    数据输出程序

    数据产生程序使用随机数来造数据,注意造数据时要符合标准。 这里为data.in

    code

    sh版:

    #!/bin/bash                          
    g++ wrong.cpp -o wrong -Wall
    g++ data.cpp -o data -Wall
    g++ std.cpp -o std -Wall  
    while true;do
        ./data>data.in
        ./wrong<data.in>usr.out
        ./std<data.in>std.out
        if diff -b -B -q usr.out std.out;then
            echo "Wonderful!"
        else
            echo "Wrong Answer!"
            break
        fi
    done
    

    c++版:

    #include <bits/stdc++.h>
    using namespace std;
    int main(){                      
        system("g++ wrong.cpp -o wrong -Wall");
        system("g++ data.cpp -o data -Wall");
        system("g++ std.cpp -o std -Wall");
        for(int T=1;T<=10000;T++){
            system("./data>data.in");
            system("./wrong<data.in>usr.out");
            system("./std<data.in>std.out");
            if(system("diff -b -B -q usr.out std.out")){
                puts("Wrong Answer");
                return 0;
            }
            else{
                printf("test : %d : Accept",T);
            }
        }
        return 0;
    }
    

    到此结束,感谢阅读。

  • 相关阅读:
    Tomcat/ WebSphere/WebLogic的作用和特点
    Servlet 执行时一般实现哪几个方法?
    synchronized 和 java.util.concurrent.locks.Lock 的异同 ?
    Request 对象的主要方法
    char 型变量中能不能存贮一个中文汉字?为什么?
    描述一下 JVM 加载 class 文 件的原理机制?
    单例设计模式
    Thread和Runnable
    Math.round方法、String实例化
    思路清晰的秘诀:结构化思维(自上而下)
  • 原文地址:https://www.cnblogs.com/hellohhy/p/13197853.html
Copyright © 2011-2022 走看看