CYaRon Yet Another Random Olympic-iNformatics test data generator

By Luogu

出过 OI 题目的都知道,造数据时,如果没有掌握一些方法,就会非常的头疼。CYaRon 是一个随机 OI 测试数据生成器,可以很方便的造出强又正确的数据。

CYaRon 基于 Python 语言,所以推荐先学习 Python 后再使用,官方快速入门教程:Github

使用指南

官方文档已经非常完善,请参考官方文档使用 CYaRon:https://github.com/luogu-dev/cyaron/wiki

常用模板

#!/usr/bin/env python

from cyaron import * # 引入CYaRon的库

# 这里常用于写数据范围,一般链表长度为测试数据的数量
_n = ati([0, 7, 50, 1E4]) # ati 函数将数组中的每一个元素转换为整形,方便您可以使用 1E4 一类的数来表示数据大小

for i in range(1, 4): # 即在 [1, 4) 范围内循环,也就是从 1 到 3,生成 3 组测试数据。
    test_data = IO(file_prefix = "Example", data_id = i) # 生成 Example[1|2|3].in/out 三组测试数据
    """
    如果不使用参数 file_prefix ,只使用 data_id ,则不会生成文件。
    而使用了 file_prefix 和 data_id 之后,若从 0 开始命名,则 0 不会显示,只是显示 .in 和 .out。
    """
    # file_prefix 是输入/输出文件的前缀名

    n = _n[i] # 获取该组数据的数据范围
    
    # 这里填写输入数据生成程序的主体

    test_data.output_gen("D:\\std_binary.exe") # 标程编译后的可执行文件,需要保证正确,不需要 freopen 等,CYaRon 自动给该程序输入并获得输出作为 .out

    # 这里填写输出数据生成程序的主体,若使用 test_data.output_gen,则不需要编写

模板使用示例

最大子段和

from cyaron import *

_n = ati([0, 10, 10, 200, 1E3, 2E3, 2E5])
ai = ati([0, 10, 20, 100, 500, 1E4, 1E4])

for i in range(1, 7):
    td = IO(file_prefix = "subarray", data_id = i)
    
    lista = [0]
    maxans = 0
    maxn = _n[i]

    n = randint(1, maxn)
    td.input_writeln(n)

    for j in range(1, n + 1):
        testa = randint(0 - ai[i], ai[i])
        td.input_write(testa)
        lista.append(testa)

        lista[j] = lista[j] + lista[j - 1] if lista[j] > 0 else lista[j]
        maxans = max(maxans, lista[j])
    
    td.output_write(maxans)

maxsubarray.jpg

使用体验

真心好用,生成的数据确实是随机的,再也不用担心手造数据弱了!

subarray5in.jpg

Last modification:January 3rd, 2022 at 01:16 pm
赠人玫瑰,手有余香。您的赞赏是对我最大的支持!