社区讨论
【广告】造数据利器——CareFree
灌水区参与者 21已保存回复 48
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 47 条
- 当前快照
- 1 份
- 快照标识符
- @lszzurcz
- 此快照首次捕获于
- 2024/02/24 19:24 2 年前
- 此快照最后确认于
- 2024/09/30 20:13 去年
托管在 Github Gist 上:https://gist.github.com/xiezheyuan/ccc45ed458ad9b4d6d88afabb962a09e(可能需要魔法)。下载
carefree.hpp 即可使用,后续将在该网站上发布更新。Carefree 是一个帮助您高效造数据的 C++ 库。它具有如下优点:
- 基于 C++ 实现,相比于 CYaRon 有较高的文件 I/O 和运算效率,且更易上手。
- 自带方便的文件 I/O(参考了 CYaRon 的设计),不必编写复杂的 shell / cmd 脚本(testlib,说的就是你)。
- 自带多种树的构造(参考了 Tree-Generator 的设计),不必费心思就可以造出具有足够强度的数据。
- 可以在造数据中渲染带计时功能的进度条帮您监测造数据进度。
- 支持生成 luogu 题目测试点配置文件,不必手动设置时空限制和子任务。
- 随机使用
mt19937_64,在main函数前自动执行随机数种子设置,保证足够高质量的随机性。
特殊的设计,帮助已经上手了 CYaRon / Tree Generator / Testlib 的您快速上手 carefree,同时新手学习 carefree 难度也不高。
环境要求:C++ 14 或更高版本,GCC/G++ 编译器。也就是说,支持传统的 Dev-C++ 和 NOI Linux 上的编译器。
示例:一个生成 A+B Problem 的生成器,含多档 Subtask:
CPP#include "carefree.hpp"
using namespace std;
signed main(){
gen_data(5, 5, [&](int i, int j){
testcase_io io("data/", i, j);
int n = 1e7;
if(i == 1) n = 10;
if(i == 2) n = 100;
if(i == 3) n = 1000;
if(i == 4) n = 1e5;
int a = randint(1, n), b = randint(1, n);
io.input_write(a, b);
io.output_write(a + b);
});
}
目前没有文档(正在撰写),不过源代码比较易读,所以大家可以先尝试地读一下哈哈。
如果想要和我共同合作,或提出建议,欢迎私信。按照洛谷讨论区规范,只能发这一次帖。所以如果对项目感兴趣请私信或者关注 Github Gist 哈。
回复
共 48 条回复,欢迎继续交流。
正在加载回复...