CYaRon 入门教程 | 快速配置题目数据
CYaRon 入门教程 | 快速配置题目数据
开始之前
-
CYaRon 官方文档:https://github.com/luosiwei-cmd/CarYon/wiki
-
下载 CYaRon:https://github.com/luosiwei-cmd/CarYon
打开页面,找到绿色的 Code,点击 Download ZIP 下载文件。
-
因为 CYaRon 搭建自 C++,所以请确保你有这方面的基础。C++ 快速入门:https://learnxinyminutes.com/zh-cn/c++/
解压完成后,会发现如下文件夹,其文件目录大致如下:
- examples(一些示例,便于参考)
- A+B Problem(最基础的数据生成)
- CF1A Theatre square(较为基础的样例生成)
- Luogu P1093(多组样例生成)
- Luogu P3366(图论相关的数据生成)
- test.cpp(生成输入数据的文件)
- std.cpp(存放题解代码,用于生成输出数据的文件)
数据生成
对于 std.cpp
,直接将题解代码放入里面即可。
注意一定要编译运行 std.cpp
,否则输出数据将无法生成。
接下来打开 test.cpp
,会发现如下代码:
#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;
}
我们以一道题目为例,来编写 test.cpp
。题目&题解
首先,命名 dataname
,这个是填写产生数据的前缀的。命名后,通过工具造出的数据文件夹名为 data-XXX
,输入输出数据名为 XXX.in
和 XXX.out
。为了防止一些玄学情况的发生,尽量不要使用中文名与空格。
接下来命名 makein
,它决定了你数据的个数。例如 makein(3,5)
就是生成 3.in-5.in
。
下面就是文件的最重要部分,介绍几个函数来实现:
inint();
instring();
in();
inendl();
inspace();
cyrand(a,b);
inint()
是写入一个整型变量或常量。intstring()
是写入一个 C++ 字符串,如intstring(" ")
是写入一个空格,intstring("\n")
是写入一个换行。in()
是写入一个其他任何类型的变量或常量。如in<long long int>(a)
就是把超长整型a
写入输入文件。inendl()
和inspace()
也可以分别打印换行和空格。cyrand(a,b)
是一个随机数函数,他的功能是返回一个在a
到b
之间的随机数。如果要产生一个 long long 范围内的随机数,用cyrand_ll()
。
最后加上 makeout( , )
,创造对应的 out 文件。
对于上面的题目,test.cpp
文件如下:
#include "caryon.h"
// including <bits/stdc++.h>
using namespace std;
using namespace ca; // namespace
int main() {
dataname = "road"; // dataname
maxtime = 1000;
makein(1,10) {
csh();
int n;
n=3;
inint(n);
instring("\n");
for(int i=1;i<=2;i++){
for(int j=1;j<=n;j++){
inint(cyrand(1,10));
instring(" ");
}
instring("\n");
}
// Please finish these rows
int m;
m=3;
inint(m);
instring("\n");
for(int i=1;i<=m;i++){
inint(cyrand(1,10));
instring("\n");
}
}
makeout(1,10);
//debug(/*start*/, /*end*/);
return 0;
}
编译运行 test.cpp
文件,会出现如下弹窗:
点击确定,回到文件夹,会发现多了一个 data-XXX
的文件夹,
检查每个文件,如果都有输入输出说明配置成功。