这道题目造数据需要注意什么
查看原帖
这道题目造数据需要注意什么
701202
high_sky楼主2025/1/17 10:05

以下是用python造数据的代码:

from cyaron import IO
import random
import os

# 参数设置
NUM_TESTS = 2
MAX_N = 100000
MAX_A = 100000
MAX_M = 100000
for i in range(1, NUM_TESTS + 1):
    ls = [0] * (MAX_A + 114514)
    # 生成输入输出文件
    io = IO(file_prefix="diary", data_id=i)
    Mn = Mm = 100
    Ma = MAX_A
    n = random.randint(Mn - 100, Mn)  # 为了演示,这里不使用最大值,避免生成时间过长
    m = random.randint(Mn - 100, Mm)
    # n = Mn = m = Mm
    # 生成数组 a
    a = [random.randint(1, Ma) for _ in range(n)]
    io.input_writeln(n, m)
    io.input_writeln(a)
    for i in a:
        ls[i] = 1
    for _ in range(m):
        t = random.randint(1, 2)
        l = random.randint(1, n)
        r = random.randint(l, n)
        if t == 1:
            x = random.randint(1, Ma)
            y = random.randint(1, Ma)
            while ls[x] == 0:
                x = random.randint(1,Ma)
            io.input_writeln(t, l, r, x, y)
            ls[y] = 1
        else:
            k = random.randint(l,r) - l + 1
            io.input_writeln(t, l, r, k)
    io.output_gen("std.exe")

这是前 22 组数据 n,m100n,m\leq 100 的数据生成器

2025/1/17 10:05
加载中...