当前位置:   article > 正文

制造测试数据的程序及对拍程序概述(Like CyaRon)

cyaron compare对拍怎么用

作为一名OIer,比赛时,对拍是必须的 

 

不对拍,有时可以悔恨终身

 

首先,对拍的程序 

 

一个是要交的程序 

 

另一个可以是暴力、搜索等,可以比较慢,但是必须正确

 

下面是C++版对拍程序(C++ & cmd) 

 

注意:所有程序不用加文件输入输出

 

#include<cstdio>  

#include<cstdio>

#include<cstdlib>

#include<ctime>

int main()

{   long s,t;

    while(1){

        system("cls");

        do{

            system("data > data.in"); //data是数据生成程序

            s=clock();

            system("a.cpp < data1.in > data1.out");  //a是要交的程序

            t=clock();

            system("b.cpp < data2.in > data2.out");  //b是正确的程序

            if(system("fc data1.out data2.out > nul"))

                break;

            else printf("AC time: %ldms\n",t-s);

        }while(1);

        printf("WA time: %ldms\n",t-s);  //运行时间 

        system("fc data1.out data2.out");

        system("pause>nul");

    }

    return 0;

}

    return 0;

}

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [cpp] view plain copy

 

include<cstdio>    

 

include<cstdlib>    

 

using namespace std;    

 

int main(){    

 

    for(int i=1;i<=1e5;i++){    

 

        #ifdef __linux    

 

        printf("You are on Linux!\n#####################\n");    

 

        system("./gen && ./sol && ./bf");    

 

        if(!system("diff tmpSol.out tmpBf.out"))    

 

        #endif    

 

        #ifdef _WIN32    

 

        printf("You are on Windows!\n#####################\n");    

 

        system("gen && sol && bf");    

 

        if(!system("fc tmpSol.out tmpBf.out"))    

 

        #endif    

 

        {    

 

            printf("Point #%d:\nAC~~ Ni GuoAK le~\n",i);    

 

        }    

 

        else{    

 

            printf("Point #%d:\nWA!! Ni Hoi U Jok Ba~\n",i);    

 

            break;    

 

        }    

 

    }    

 

    return 0;    

 

}    

 

0.简介:

 

在Python环境下,利用random,或洛谷研发的Cyaron都是不错的选择。

 

如果要使用Cyaron 请参见

 

Git-hub luogu-dev/cyaron

 

1.环境配置:

 

安装Python3及以上版本,在安装时选择自定义,勾选自动设置环境变量选项。当然能自己搞%%%

 

安装完成后打开命令提示符,输入python,如果进入Python环境就成功啦!!!

 

2.引入包:

 

想要使用random或cyaron,需要在程序开始引入包,类似于C++的头文件。

 

import random

 

from cyaron import *

 

1 2 如果你是第一次使用,需要安装cyaron。打开命令提示符输入以下命令即可。

 

pip install cyaron

 

1 3.格式化创建输入输出文件

 

fout = open("brick.in","w")

 

fout.close()

 

1 2 创建brick.in

 

for i in range(1,11):

 

    fout = open("test%d.in"%i,"w")

fout.close()

 

py的range返回值是左闭右开的

 

1 2 3 4 创建test1.in~test10.in

 

4.输出

 

屏幕输出

 

for i in range(1,6):

 

    for j in range(1,6):

 

            print("%d %d\n"%(i,j))

1 2 3 py的%d,\n等用法类似C++ 

 

注意后半部分用%分割 

 

样例输出

 

1 1 1 2 1 3 1 4 1 5 2 1 2 2 2 3 2 4 2 5 3 1 3 2 3 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 文件输出

 

接上一次的代码,向test1.in~test10.in中写入

 

for i in range(1,11):

 

    fout = open("test%d.in"%i,"w")

 

    fout.write("%d "%i)

fout.write的用法与print类似

 

fout.close()

 

1 2 3 4 5 5.生成数据

 

random

import random

fout = open("brick.in","w")

t = random.randint(1, 10)

fout.write("%d\n"%t)

for i in range(1,t+1):

        n = random.randint(1, 100)

        fout.write("%d\n"%n)

        for j in range(1,n+1):

                for k in range(1,n+1):

                        p=random.randint(1,2)

                        if p==1:

                                fout.write(".")

                        if p==2:

                                fout.write("#")

                fout.write("\n")

fout.close()

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 random有random.randint(l,r)函数,返回[l,r]之间的Int值。

 

样例输出:

 

5 23

 

.#.....####..######.#.

 

.#..#.##.##.##...##..#.

 

.###...##...#.#..#.

 

.#####.#......##...##.#

 

...###.####.#.##....###

 

.###.#.#.##.#..#...##..

 

..####..#.###......

 

..#.##..##.#.##.#..#.

 

.##.##.##..#......

 

....#.#....##.#.##.

 

...####...#.#.....#.###

 

.#.#...###..#.#...

 

.###..##..#.##.######.

 

..#.#..##....##.....

 

.#.#.##.#.###..#.##...#

 

.#..###.#.###..#..##.#.

 

..#.....##..###..#..#.

 

.#.#..######..##.#.####

 

..##.#...###.#.##.#.

 

....##.....#...##...

 

..#...#.##.###.......##

 

...#..#.##.###.###..##.

 

.#....#####..#.####.#.

 

25

 

..#.#.#####.##..##..#.

 

..#.#..##.#.#.#.#..###..#

 

..#.###.#####.#...##.

 

....#...#..##.#..##.#.

 

..##.##..#..##..####...

 

.#....#......##..#.#.###.

 

...##.##.....#..##.##...

 

.##..######.#.#..#####..#

 

.....#####.####.###..#.

 

.####...##...#.#.###.##..

 

.#..####..#.##...#.#.

 

..##....##..###.#.#.

 

......#.######.#..#...

 

.#.####..##.#.#.#..#.

 

..###.##.####.####..#..##

 

.####.#####..#..#.#.#....

 

.#.#.###.#.##.#..#####..#

 

.#...#.####.####.#..#.

 

..##...#.###.#...#.##.

 

..##..##.####..##..

 

.#.####.#..####....#####.

 

......###...##.##.#.##.

 

.#.#..#.##...###.##.#.

 

..#.##.#...##.#.#...#...

 

..##....#....####..##.

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 数据太多不完全展示

 

6.对拍

 

对拍需要系统包

 

import os

 

1 OS命令用法与c++的system命令类似,都是引用系统命令提示符的命令

 

import os

 

while True:

 

    os.system("a.exe")

 

    os.system("b.exe")

 

    os.system("fc a.out b.out")

1 2 3 4 5 当然你也可以用C++

 

#include <cstdlib>

using namespace std;

int main(){

    while (1){

        system("python mkdt.py");

        system("a.exe");

        system("b.exe");

        system("fc a.out b.out");

    }

    return 0;

}

1 2 3 4 5 6 7 8 9 10 11 对于不需要写文件输入输出的对拍Cyaron有更好的解决方案。它有自带的对拍函数可以引用。

 

7.Summary

 

当然了,上面的操作都是要设置好Python的环境变量的。

 

如果你对Python的基本语法还有不理解的地方,请参考luogu Python入门指南

制造测试数据的程序及对拍程序概述(Like CyaRon)

 

2017-12-13 22:25:13
thumb_up  0

 


作为一名OIer,比赛时,对拍是必须的 

不对拍,有时可以悔恨终身

首先,对拍的程序 

一个是要交的程序 

另一个可以是暴力、搜索等,可以比较慢,但是必须正确

下面是C++版对拍程序(C++ & cmd) 

注意:所有程序不用加文件输入输出

  1. #include<cstdio>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<ctime>
  5. int main()
  6. { long s,t;
  7. while(1){
  8. system("cls");
  9. do{
  10. system("data > data.in"); //data是数据生成程序
  11. s=clock();
  12. system("a.cpp < data1.in > data1.out"); //a是要交的程序
  13. t=clock();
  14. system("b.cpp < data2.in > data2.out"); //b是正确的程序
  15. if(system("fc data1.out data2.out > nul"))
  16. break;
  17. else printf("AC time: %ldms\n",t-s);
  18. }while(1);
  19. printf("WA time: %ldms\n",t-s); //运行时间
  20. system("fc data1.out data2.out");
  21. system("pause>nul");
  22. }
  23. return 0;
  24. }
  25. return 0;
  26. }

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [cpp] view plain copy

include<cstdio>    

include<cstdlib>    

using namespace std;    

int main(){    

    for(int i=1;i<=1e5;i++){    

        #ifdef __linux    

        printf("You are on Linux!\n#####################\n");    

        system("./gen && ./sol && ./bf");    

        if(!system("diff tmpSol.out tmpBf.out"))    

        #endif    

        #ifdef _WIN32    

        printf("You are on Windows!\n#####################\n");    

        system("gen && sol && bf");    

        if(!system("fc tmpSol.out tmpBf.out"))    

        #endif    

        {    

            printf("Point #%d:\nAC~~ Ni GuoAK le~\n",i);    

        }    

        else{    

            printf("Point #%d:\nWA!! Ni Hoi U Jok Ba~\n",i);    

            break;    

        }    

    }    

    return 0;    

}    

0.简介:

在Python环境下,利用random,或洛谷研发的Cyaron都是不错的选择。

如果要使用Cyaron 请参见

Git-hub luogu-dev/cyaron

1.环境配置:

安装Python3及以上版本,在安装时选择自定义,勾选自动设置环境变量选项。当然能自己搞%%%

安装完成后打开命令提示符,输入python,如果进入Python环境就成功啦!!!

2.引入包:

想要使用random或cyaron,需要在程序开始引入包,类似于C++的头文件。

import random

from cyaron import *

1 2 如果你是第一次使用,需要安装cyaron。打开命令提示符输入以下命令即可。

pip install cyaron

1 3.格式化创建输入输出文件

fout = open("brick.in","w")

fout.close()

1 2 创建brick.in

for i in range(1,11):

    fout = open("test%d.in"%i,"w")

fout.close()

py的range返回值是左闭右开的

1 2 3 4 创建test1.in~test10.in

4.输出

屏幕输出

for i in range(1,6):

  1. for j in range(1,6):
  2. print("%d %d\n"%(i,j))

1 2 3 py的%d,\n等用法类似C++ 

注意后半部分用%分割 

样例输出

1 1 1 2 1 3 1 4 1 5 2 1 2 2 2 3 2 4 2 5 3 1 3 2 3 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 文件输出

接上一次的代码,向test1.in~test10.in中写入

for i in range(1,11):

  1. fout = open("test%d.in"%i,"w")
  2. fout.write("%d "%i)

fout.write的用法与print类似

fout.close()

1 2 3 4 5 5.生成数据

  1. random
  2. import random
  3. fout = open("brick.in","w")
  4. t = random.randint(1, 10)
  5. fout.write("%d\n"%t)
  6. for i in range(1,t+1):
  7. n = random.randint(1, 100)
  8. fout.write("%d\n"%n)
  9. for j in range(1,n+1):
  10. for k in range(1,n+1):
  11. p=random.randint(1,2)
  12. if p==1:
  13. fout.write(".")
  14. if p==2:
  15. fout.write("#")
  16. fout.write("\n")
  17. fout.close()

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 random有random.randint(l,r)函数,返回[l,r]之间的Int值。

样例输出:

5 23

.#.....####..######.#.

.#..#.##.##.##...##..#.

.###...##...#.#..#.

.#####.#......##...##.#

...###.####.#.##....###

.###.#.#.##.#..#...##..

..####..#.###......

..#.##..##.#.##.#..#.

.##.##.##..#......

....#.#....##.#.##.

...####...#.#.....#.###

.#.#...###..#.#...

.###..##..#.##.######.

..#.#..##....##.....

.#.#.##.#.###..#.##...#

.#..###.#.###..#..##.#.

..#.....##..###..#..#.

.#.#..######..##.#.####

..##.#...###.#.##.#.

....##.....#...##...

..#...#.##.###.......##

...#..#.##.###.###..##.

.#....#####..#.####.#.

25

..#.#.#####.##..##..#.

..#.#..##.#.#.#.#..###..#

..#.###.#####.#...##.

....#...#..##.#..##.#.

..##.##..#..##..####...

.#....#......##..#.#.###.

...##.##.....#..##.##...

.##..######.#.#..#####..#

.....#####.####.###..#.

.####...##...#.#.###.##..

.#..####..#.##...#.#.

..##....##..###.#.#.

......#.######.#..#...

.#.####..##.#.#.#..#.

..###.##.####.####..#..##

.####.#####..#..#.#.#....

.#.#.###.#.##.#..#####..#

.#...#.####.####.#..#.

..##...#.###.#...#.##.

..##..##.####..##..

.#.####.#..####....#####.

......###...##.##.#.##.

.#.#..#.##...###.##.#.

..#.##.#...##.#.#...#...

..##....#....####..##.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 数据太多不完全展示

6.对拍

对拍需要系统包

import os

1 OS命令用法与c++的system命令类似,都是引用系统命令提示符的命令

import os

while True:

  1. os.system("a.exe")
  2. os.system("b.exe")
  3. os.system("fc a.out b.out")

1 2 3 4 5 当然你也可以用C++

  1. #include <cstdlib>
  2. using namespace std;
  3. int main(){
  4. while (1){
  5. system("python mkdt.py");
  6. system("a.exe");
  7. system("b.exe");
  8. system("fc a.out b.out");
  9. }
  10. return 0;
  11. }

1 2 3 4 5 6 7 8 9 10 11 对于不需要写文件输入输出的对拍Cyaron有更好的解决方案。它有自带的对拍函数可以引用。

7.Summary

当然了,上面的操作都是要设置好Python的环境变量的。

如果你对Python的基本语法还有不理解的地方,请参考luogu Python入门指南

转载于:https://www.cnblogs.com/DingYi0602OIer/p/8035272.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/72652
推荐阅读
相关标签
  

闽ICP备14008679号