前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用CarYon快速制作题目数据

使用CarYon快速制作题目数据

作者头像
fishhh
发布2022-11-24 16:45:29
6640
发布2022-11-24 16:45:29
举报
文章被收录于专栏:OI算法学习笔记

CarYon简明使用指南

01_下载工具

github

蓝奏云

wiki下载

建议从蓝奏云下载,速度更快。

02_解压缩

将下载后的压缩包解压缩。

解压缩后文件夹分布为:

  • examples
    • A+B Problem
    • CF1A Theatre square
    • Luogu P1093
    • Luogu P3366
  • tools
    • Compare
    • Configurstion-File-Analysis
    • Extensions
  • caryon.h
  • myprogram.cpp
  • test.cpp
  • std.cpp

简要说明

  • example 这个文件夹会存放一些使用的例子:
    • A+B Problem : 最基础的样例生成
    • CF1A :较为基础的样例生成
    • P1093:多组样例生成
    • P3366 :图论相关的数据生成
  • tools 相关工具。初级使用时不用关注。
    • Compare:对拍器
    • Configurstion-File-Analysis:仅编写配置文件生成数据
    • Extension:插件

03_制作数据

03_1 std文件

将题目的标准代码复制、粘贴到 std.cpp 中。并编译源文件,使其生成 std.exe文件。

注意:每次对std.cpp 的更改,都需要重新编译生成std.exe文件。

03_2 test文件

根据输入格式要求,在test.cpp 中构建相应输入代码。

代码语言:javascript
复制
#include "caryon.h"
// including <bits/stdc++.h>
using namespace std;
using namespace ca;  // namespace
int main() {
    dataname = "";  // dataname
    maxtime  = 1000;
    makein(/*start*/, /*end*/) {
        csh();
        // Please finish these rows
    }
    makeout(/*start*/, /*end*/);
    //debug(/*start*/, /*end*/); 程序对拍
    return 0;
}
  1. datename 中存放题目名称。之后会生成 name1.inname1.out 这样对应的数据。建议留空,使其生成1.in1.out 这样的数据。
  2. maxtime:程序实现。不用改动。
  3. makeinmakeout 中的startend参数。对应你需要生成的数据点开始、结束编号。如你想生成start.in,start.out ~ end.in,end.out 的数据,填上相应的参数即可。
  4. makein 内部,csh 的下方,根据输入要求书写对应的代码。

03_3 随机数据

cyrand(a,b) 可返回一个在 ab之间的随机数。

如果要产生一个long long 范围内的随机数,用cyrand_ll()

03_4 写入in文件

将生成的随机值写入到文件中。

  • inint(int) :将一个整型的变量或常量写入每一个输入文件。
  • instring(std::string) :将一个 C++ 字符串写入每一个输入文件。
  • 任意类型格式:in<元素类型>(对应类型数据) : 例:long long a;in<long long>(a)
  • inendl():在输入文件中打印一个换行符。
  • inspace():在输入文件中打印一个空格。

03_5 制作out文件

根据输入要求写好test.cpp 文件后,编译运行即可。

此时,在test.cpp所在的目录里面必须有std.exe文件,也就是俗称的标准程序。注意一定是标准程序经过编译后的 std.exe文件,才能制造出对应的out文件。std.cpp 中不需要包含任何文件操作。

例子说明

输入格式

代码语言:javascript
复制
#include "caryon.h"
// including <bits/stdc++.h>
using namespace std;
using namespace ca;  // namespace
int main() {
    dataname = "";  // dataname留空
    maxtime  = 1000;
    makein(/*start*/8, /*end*/10) {//针对100%的数据,生成测试点8.in ~ 测试点10.in
        csh();
        // Please finish these rows
		int n=cyrand(1e5,1e6);// n的范围 1e5 ~ 1e6 ,与前面的70%的数据作区分。
		inint(n);//写入n
		instring("\n");//写入换行 也可用inendl()
		for(int i=1;i<=n;i++){//循环n次
			inint(cyrand(1,2e9));//写入随机出的Hi, 范围 1 ~ 1e9
			instring(" ");//写入空格
			inint(cyrand(1,1e3));//写入随机出的Vi, 范围 1 ~ 1e3
			instring("\n");//写入换行
		}
    }
    makeout(/*start*/8, /*end*/10);//针对100%的数据,生成测试点8.out ~ 测试点10.out
    //debug(/*start*/, /*end*/);
    return 0;
}

注意

当前爱思创题库的题目数据需注意行末的空格。行末不要有多余的空格。

Q.E.D.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CarYon简明使用指南
    • 01_下载工具
      • 02_解压缩
        • 简要说明
      • 03_制作数据
        • 03_1 std文件
        • 03_2 test文件
        • 03_3 随机数据
        • 03_4 写入in文件
        • 03_5 制作out文件
      • 例子说明
        • 注意
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档