如何使用 luogu 的 CYaRON 生成数据
luogu 的 CYaRON已经贴主页很久了。其实他是一个很方便的自动数据生成器,只不过官方的用法有些 (潦草) 专业,大部分人都看不懂。
所以今天就 (水) 一片博客给大家讲一讲如何使用
1.安装CYaRON
[top]
1.安装CYaRON
(一)先下载一个python,必须的 CYaRON依赖python
python下载链接:python
(二)安装CYaRON
-
WIN+R打开cmd(windows)
-
command+空格打开搜索terminal(macos)
-
输入 pip install cyaron
-
安装 CYaRON
等待进度条安装完
如果已经安装完了,那么恭喜你,你成功安装了CYaRON
[top]
2.使用CYaRON
(一)打开python
- 打开python
- 点击file
- 点击newfile
(二)
- 新手建议先复制模版 高手的话 。。。直接看GITHUB(话说看得懂GITHUB的人会来我这里看吗)
from cyaron import * # 引入CYaRon的库
for i in range(1, 51): # 51这里填写你想要生成的数据的个数+1
test_data = IO(file_prefix="heat", data_id=i) # 生成 heat[1-50].in/out 五十组测试数据 heat这里可以更改 这里是前缀
test_data.output_gen("C:\\Users\\Administrator\\Documents\\未命名1.exe") #这里写源代码编译出来的exe文件!!注意不能写freopen
- 目前只是一个基本的代码,不能生成数据
- 需要加一些基础的语法,可以生成数据
(三) 一些基础的语法
1.如果你想生成一个随机数字n的话,你可以输入
n=randint(1,1000)#int只生成的数据的类型,括号里的是数据范围
同理,生成多个数据
x=randint(1,1000)
y=randint(1,1000)
z=randint(1,1000)
同理,生成一个1到10000的数据
x=randint(1,10000)
2.光是生成一个变量没有用,需要把他输出(关于换行和空格,CYaRON可以自动处理)
test_data.input_writeln(n)
这样就可以把变量输出到了输入中
如果你想把多个数据放在一行,就可以这样
test_data.input_writeln(n,m,s,t)
3.循环数据
很多题都有多行数据,那该怎么办呢譬如有n行数据,那该怎么生成
for i in range(1,n):
a=randint(1,1000);
test_data.input_writeln(a)
一行多个数据?照样行!
for i in range(1,n):
a=randint(1,1000);
b=randint(1,1000);
test_data.input_writeln(a,b)
4.其他数据
有些特殊的数据都有模版,譬如图
这个的话,举例就算了,可以去github上去看
graph = Graph.graph(n,m,weight_limit=5)
5.输出 首先需要些一个源代码,然后,再编译成exe 再在输出里写路径 譬如
test_data.output_gen("D:\\std_binary.exe")
总结
CYaRON是个非常好用的数据生成器
只不过大家(只我们这种看不懂的人)看不懂github
希望这片文章能帮到你
附录 T154214数据
#!/usr/bin/env python
from cyaron import * # 引入CYaRon的库
# 这是一个图论题的数据生成器,该题目在洛谷的题号为P1339
for i in range(1, 51): # 即在[1, 4)范围内循环,也就是从1到3
test_data = IO(file_prefix="heat", data_id=i) # 生成 heat[1|2|3].in/out 三组测试数据
n=randint(1,1000);
r=randint(1,100);
s=randint(1,100);
test_data.input_writeln(n,r,s);
for i in range(1,n+1):
a=randint(1,1000);
b=randint(1,1000);
test_data.input_writeln(a,b);
test_data.output_gen("C:\\Users\\Administrator\\Documents\\未命名1.exe") # 标程编译后的可执行文件,不需要freopen等,CYaRon自动给该程序输入并获得输出作为.out