作为一名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)

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

#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入门指南

最新文章

  1. 我们为什么要看《超实用的Node.JS代码段》
  2. java三大框架
  3. 【Android】做一款类似我要当学霸里的学习监督的APP
  4. selenium+python测试
  5. 【BZOJ 1877】【SDOI 2009】晨跑
  6. javascript中求浏览器窗口可视区域兼容性写法
  7. python 代码片段17
  8. JMS生产者+单线程发送-我们到底能走多远系列(29)
  9. bzoj 2049: [Sdoi2008]Cave 洞穴勘测 动态树
  10. Java订单号(时间加流水号)
  11. CentOS下安装Nginx并添加nginx_upload_module
  12. 【前端】用百度BAE和express部署自己的node后台
  13. hadoop基础教程免费分享
  14. javascript 下拉列表 自动取值 无需value
  15. RDS和ROS使用小结
  16. Windows Server 2016-查询并导出固定时间段创建AD用户
  17. Linux系统xinetd服务启动不了
  18. 管理mysql数据的两条sql tips
  19. 探索未知种族之osg类生物---渲染遍历之裁剪一
  20. go语言中的运算符^,&amp;

热门文章

  1. Pseudoforest(伪最大生成树)
  2. 2015ACM/ICPC亚洲区沈阳站 B-Bazinga
  3. 0_Simple__cdpSimplePrint + 0_Simple__cdpSimpleQuicksort
  4. Browsing contexts 浏览器上下文
  5. 深入分析Android动画(一)
  6. android wear开发之:增加可穿戴设备功能到通知中 - Adding Wearable Features to Notifications
  7. web前端-----JAVA Script(一)
  8. MVC-1(javabean+jsp+servlet+jdbc)
  9. kali 2.0中msf连接postgres数据库
  10. Chapter 6: The Memory Hierarchy