HydroOJ 从入门到入土(7)Hydro自带数据生成器使用说明(>=4.10.1)

发布时间 2023-12-17 16:52:43作者: Bowen404

Hydro更新了一个新功能, 可以直接用自带的数据生成器, 在线生成数据, 简单记录一下使用方法

1. 文件准备

  • gen.py (数据生成器, 后附模版)
  • std.cpp (标准程序, 后附模版)

文件名随意, 其他的类型应该也行, 不过没试.

2.使用步骤

  1. 将以上两个文件上传到测试数据里
  2. 生成测试数据(Beta)的两个栏里, 分别填上gen.pystd.cpp
  3. 点击生成, 此时会弹出一个界面, running并且generating数据点.
  4. 成功生成完成之后, 检查一下自己的测试数据, 应该已经有若干测试数据了.

3. 注意事项

  1. 生成器只需要生成输入文件, 我用了文件读写, 不知道用 print 行不行, 用空再试
  2. 不支持 cyaron, 得自己处理 nix 下的 python 环境, 比如把 cyaron 的包手动传到 Python 里.

4. 文件模版

gen.py

import random

_n = [0, '0', '3', 'a', 'z', 'A', 'Z', '{', '@', '[', '`']
_m = [0, 10, 4, 20, 4, 20, 19, 20, 19, 15, 2500]

nums = range(10000)
for i in range(1, 11): 
    test_data = open(f"{i}.in", 'w') 

    n = random.randint(5, 100)
    ls = random.sample(nums, n)
    for i in range(n):
        ls[i] *= random.choice([-1, 1])
    test_data.write(f'{n}\n')
    test_data.write(' '.join(map(str, ls)))

    test_data.close()

std.cpp

#include <bits/stdc++.h>
using namespace std;

int a[110], n;

bool cmp(int a, int b){ return abs(a) > abs(b); }

int main(){
	cin >> n;
	for (int i = 0; i < n; ++i)
	{
		cin >> a[i];
	}
	sort(a, a+n, cmp);

	for (int i = 0; i < n; ++i)
	{
		cout << a[i] << ' ';
	}
	
	return 0;
}