JOURNAL ENTRY

DataMaker 一款基于 C++ 的数据生成器

注意:由于这个是作者早期写的,过于烂,所以作者准备重构。

[github author="ZhongTianrui" project="DataMaker"][/github]

如果访问不了 Github,可以访问 Gitee 中的仓库

一个为OIer准备的数据制造系统,想要造出数据?只需要打开makedata.cpp,用cout和我们提供的随机函数,即可造出多组强大的数据

优点:

  1. 依赖于 c++,OIer 的福利
  2. 自动生成 zip 文件,不用手动生成
  3. 自动配置捆绑
  4. 速度快

用法:

  1. 打开 makedata.cpp,使用函数库自定义随机数,用cout进行输出。主程序的第一行必须是 pre();
  2. 打开 std.cpp,放上标程
  3. 记得保存。
  4. 打开 config.json
    在 mode 中选择模式:模式 0:no subtask,模式 1:subtask 捆绑,模式 2:subtask 不捆绑
    在 name 中写入测试组的名称 在 std 中写入参考程序的路径
    如果启用 subtask: 在 subtasks 中写入一个 json 的列表,每一个内容里包含两个个值,begin 代表测试点的开始,end 代表测试点的结束。
    ​ 在 exename 中写入输入生成器的路径
    ​ 可以在输入生成器中区分不同层次的数据范围,注意写完后调试输入生成器。使用方法如:

    #include <bits/stdc++.h>
    #include "includes/make.hpp"
    using namespace std;
    int main(int argc, char* argv[]) {
    ios::sync_with_stdio(false);
    pre();
    /*make your data here
    use cout in output
    */
    if (argv[1][0] == '0') cout << randint(1, 1e4) << " " << randint(1, 1e4);//第一种情况
    else if (argv[1][0] == '1') cout << randint(1, 1e7) << " " << randint(1, 1e7);//第二种
    else if (argv[1][0] == '2') cout << randint(1, 1e9) << " " << randint(1, 1e9);//第三种
    else cout << "err";//如果 config 写的是对的话,这种情况不会发生
    //每一个 subtask 对应一个
    return 0;
    }

    如果不启用 subtask: 在 exename 中写入输入生成器的路径
    注意上述的所有写入的程序路径均不以 ./ 开头或 .exe 结尾,应该用 / 作为路径分隔符而不是 \\。 程序会自动获取测试点的数量,只要你的测试点开头和结尾是按规范填的,而且每一个 subtask 的开头等于上一项的结尾的编号 + 1。

  5. 运行 run.bat/run.sh,程序如果运行了一会后自动结束了,那么说明你成功了!(注意,如果发现程序卡住了,且电脑风扇转的很快,请关闭程序后重新打开)。
  6. 直接把 “data-文件夹名.zip”上传到洛谷上就行了。

储存库中的 sample 文件夹包含一些示例。

函数库:

randint() :随机整型,支持 long long

randch\_up() :随机大写字母

randch\_lo() :随机小写字母

randstr\_h(int length) :随机大小写字母和数字综合的字符串

randstr\_up(int length) :随机大写字符串

randstr\_lo(int length) :随机小写字符串

randstr\_num(int length) :随机数字串

randarr(int n, int l, int r) :随机数组,范围 [l, r],返回 int*

randqujian(int m, int l, int r) :随机区间,生成 m 个 [l, r] 的区间,自动打印

randtree(int n, bool with\_num, int r = 0) :随机树,生成n个点,n-1 条边,可以选择是否带权,权值 [1, r],自动打印。(如果不需要权值,不用传入 r)。

randgra(int n, int m, bool with\_num) :随机无向联通图,需自行打印 n 和 m,自动打印建边的输入,如果想有权值,with\_num = 1,否则 with\_num = 0

update:

datesummaryversion
-移除随机名称功能,部分重构 make.cpp,移除task\_amount参数3.1
2024/2/3原本的捆绑选项变为模式选项,增加数据分层模式,把调用 makedata.cpp 的代码中增加命令行参数传入,更新函数库,重新制作 make.cpp,添加对于 Linux 的支持,支持通过 json 配置。3.0
2024/2/2修复捆绑,自动配置 config.yml 文件2.3.2
2023/2/8程序会将输出放在 log.log2.3.1
2023/2/6更新 make.hpp,添加随机数组,随机区间,随机树,随机图2.3
2023/2/5 21:03添加捆绑测试点的支持,整个框架都会更改2.2
2023/2/5 15:08更新 make.hpp2.1
2023/2/5 14:43添加 config2.0
2023/2/4 21:00完成 1.0 版本1.0

继续阅读

评论 (11)

取消
  1. 头像
    Colinxu2020
    Windows 10 · Google Chrome

    Warning: Trying to access array offset on value of type null in /www/wwwroot/typecho.ztrztr.top/usr/themes/Joe-master/core/function.php on line 261
    @

    一些问题(make.cpp里面):

    重复的 using。 不均匀的随机(mt199937()%36)
    回复
    1. 头像
      Colinxu2020
      Windows 10 · Google Chrome
      @ Colinxu2020
      不规范的git使用,.exe文件应该在Release里
      回复
    2. 头像
      Colinxu2020
      Windows 10 · Google Chrome
      @ Colinxu2020

      所有的注释都是未知编码,不是GBK也不是UTF-8

      回复
      1. 头像
        Colinxu2020
        Windows 10 · Google Chrome
        @ Colinxu2020

        config不建议散落在一堆文件里

        回复
        1. 头像
          ztrztr
          Windows 10 · Google Chrome
          @ Colinxu2020

          我下一个更新有改

          回复
      2. 头像
        ztrztr
        Windows 10 · Google Chrome
        @ Colinxu2020

        因为这些注释是devc++编辑的

        回复
  2. 头像
    Colinxu2020
    Windows 10 · Google Chrome

    Warning: Trying to access array offset on value of type null in /www/wwwroot/typecho.ztrztr.top/usr/themes/Joe-master/core/function.php on line 261
    @

    configure 是缺失的所以Github CI一定失败。

    回复
  3. 头像
    陶小桃Blog
    Windows 10 · Google Chrome

    Warning: Trying to access array offset on value of type null in /www/wwwroot/typecho.ztrztr.top/usr/themes/Joe-master/core/function.php on line 261
    @

    强的。一直想学C++,但是实际还是喜欢用Python

    回复
    1. 头像
      ztrztr
      Windows 10 · Google Chrome
      @ 陶小桃Blog

      哈哈,主要是学信息学竞赛需要用到 c++

      回复
  4. 头像
    baivbai
    Android · Google Chrome

    Warning: Trying to access array offset on value of type null in /www/wwwroot/typecho.ztrztr.top/usr/themes/Joe-master/core/function.php on line 261
    @

    受教了,文章很不错

    回复
    1. 头像
      ztrztr
      MacOS · Safari
      @ baivbai

      谢谢

      回复