HeaderFile (1.2-1.6) 中 hct.h 使用教程
下载
HCT 是干什么的
辅助数据生成
主干框架
- 你需要包含必须的头文件
hct.h - 此外,你需要实现如下函数:
void create() 数据生成函数
void solve() 答案生成函数 (正解)
void test() 测试函数
即使你并没有用到以上三个函数,你也必须对上述函数实例化(将会在下个版本得到优化)
create
HCT 重载了标准输出流,因此你仅仅需要输出测试数据到标准输出流即可
create() 函数的用途是生成输入文件,因此你需要按照题目格式输出
下面为一个 create() 可能的例子
void create(){
cout<<1<<" "<<2<<endl;
}
HCT 会在生成的每一组测试数据中都调用一遍 create(),因此,恰当地使用 create() 可以帮助你生成良好的数据,详见下方 HCT 功能函数
solve
为了简化 solve() 函数的编写难度,重载了标准输入输出流
现在实现 solve() 非常简单,你只需要把正解程序复制过来,并把主函数改成 solve() 函数即可
test
也许你需要测试函数来辅助测试,测试函数会在数据生成前就被调用,在测试函数内输出的内容会显示在控制台上,方便测试
HCT 功能函数
为了使用这些函数,你只需要调用 hct 结构体
随机函数
SystemRand(l,r) 调用一次 std::rand() 生成 \([l,r]\) 间的随机数
Rand() 生成随机非负整数
RandSignedInt() 生成随机整数
RandInt(l,r) 生成 \([l,r]\) 间的随机数
RandLong() 生成随机非负 \(64\) 位整数
RandSignedLong()生成随机 \(64\) 位整数
RandLong(l,r) 生成 \([l,r]\) 间的随机 \(64\) 位整数
RandReal(fixed) 生成 \([0,1]\) 之间,\(fixed\) 位的随机实数
构造函数
create_tree(int V,int root=1,int print_method=1,char devide=' ')
生成一颗有根树
参数:
V 节点数
root 根节点编号
print_method 输出方式
print_method=1 输出 \(V-1\) 个数,第 \(i\) 个数表示节点 \(i+1\) 的父亲
print_method=2 输出 \(V\) 行,每行两个数,描述一条边
devide 分隔符
create_tree_spcific(int V,int root=1,double out_degree=0.5,int print_method=1,char devide=' ')
以固定参数生成一颗树,请注意这样生成的树也是固定的
out_degree \([0,1]\) 中的实数,外向值,该值越高,就越倾向于生成链状结构,否则倾向于生成菊花结构
create_unordered_graph(int V,int G,bool connect=true,bool self_loop=false,bool multiedge=false)
生成无向图
V 点数
G 边数
connect 是否连通
self_loop 是否自环
multiedge 是否重边
格式:\(G\) 行,每行两个数描述一条边
create_list(int n,long long L,long long R,bool multinumber=true,char devide=' ')
生成序列
n 序列长度
L,R 值域
multinumber 是否能出现相同数字
devide 分隔符
create_ordered_pair(int L,int R,bool multinumber=true,bool isgreater=false)
生成有序数对
L,R 值域
multinumber 是否能出现相同数字
isgreater 为 \(0\) 则生成升序数对,否则反之
随机初始化函数
devide_srand() 使用内存池(random_device)随机数作为种子初始化
time_srand() 使用当前时间作为种子初始化
seed_srand(seed) 固定种子初始化
变量
test_id 当前测试点编号
其他函数
access(double access_p) 该函数有 access_p 的概率返回 true
控制台操作
HCT 会询问你如下参数
file name:输出文件名,这里的文件名是形如 cth0.in 中的 cth
amounts of tests: 测试点总数
Start id: 首个测试点编号,HCT 会从首个测试点编号开始,递增顺序依次生成总数个测试点
宏定义设置
HCT 的默认初始化方式为 time_srand,如果你想要切换到 device_srand 可以对 device_rand 进行宏定义
HCT 测试点间的 srand 方式为 seed_srand,不是 time_srand
命名冲突
你不能够使用如下名称作为变量名,否则会与 HCT 产生命名冲突
filein fileout make_in tostring make hct rd dist
实例
下面展示 T510411 的测试数据生成代码
#include <iostream>
#include <hdk/hct.h>
#define int long long
void create(){
if(hct.test_id<10) cout<<hct.RandLong(1,1e8)<<endl;
else if(hct.test_id<20) cout<<hct.RandLong(1e10,1e12)<<endl;
else cout<<hct.RandLong(1e13,1e14)<<endl;
}
int H(int n){
int res=0;
for(int l=1,r;l<=n;l=r+1){
int k=n/l;
r=n/k;
res+=k*(r-l+1);
}
return res;
}
void solve(){
int n;
scanf("%lld", &n);
printf("%lld\n",H(n));
}
void test(){
}
HeaderFile (1.2-1.6) 中 hct.h 使用教程的更多相关文章
- 关于apue.3e中apue.h的使用
关于apue.3e中apue.h的使用 近来要学一遍APUE第三版,并于此开博做为记录. 先下载源文件: # url: http://http//www.apuebook.com/code3e.htm ...
- cocos2dx 3.7中 AppDelegate.h的class TestController;这种写法的具体意思不太明白,只能猜是类似于外部定义的东西。
cocos2dx 3.7中 AppDelegate.h的class TestController;这种写法的具体意思不太明白,只能猜是类似于外部定义的东西.
- 彻底弄清c标准库中string.h里的常用函数用法
在我们平常写的c/c++程序,一些算法题中,我们常常会用到c标准库中string.h文件中的函数,这些函数主要用于处理内存,字符串相关操作,是很有用的工具函数.而且有些时候,在笔试或面试中也会出现让你 ...
- 解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载
解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载 当这两个头文件顺序颠倒时,编译会出现许多莫名其妙的错误,错误如下: 1>…\include\ws2def.h( ...
- MFC中快速应用OpenCV教程
论坛上看到非常经典的VS2008 + OpenCV 2.0下的配置过程: (这里用的是opencv2.0) 1. 文件 | 项目 | MFC | MFC应用程序 |(新名称如MFCtest)|next ...
- [Python][flask][flask-wtf]关于flask-wtf中API使用实例教程
简介:简单的集成flask,WTForms,包括跨站请求伪造(CSRF),文件上传和验证码. 一.安装(Install) 此文仍然是Windows操作系统下的教程,但是和linux操作系统下的运行环境 ...
- 《阿里巴巴Java开发手册》代码格式部分应用——idea中checkstyle的使用教程
<阿里巴巴Java开发手册>代码格式部分应用--idea中checkstyle的使用教程 1.<阿里巴巴Java开发手册> 这是阿里巴巴工程师送给各位软件工程师的宝典,就像开车 ...
- Ubuntu中NS2安装详细教程
前言: NS2是指 Network Simulator version 2,NS(Network Simulator) 是一种针对网络技术的源代码公开的.免费的软件模拟平台,研究人员使用它可以很容易的 ...
- 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...
- MVC中使用SignaIR入门教程
一.前言:每次写总要说一点最近的感想 进入工作快半年了,昨天是最郁闷的一天,我怀疑我是不是得了"星期一综合征",每个星期一很没有状态.全身都有点酸痛,这个可能一个星期只有周末才打一 ...
随机推荐
- Visual Studio 必备插件集合:AI 助力开发
一.前言 2024年AI浪潮席卷全球,编程界迎来全新的挑战与机遇.智能编程.自动化测试.代码审查,这一切都得益于AI技术的迅猛发展,它正在重塑开发者的日常,让编写代码变得更加高效.智能. 精选出最受 ...
- Day 7 - 哈希与 KMP
字符串哈希 定义 我们定义一个把字符串映射到整数的函数 \(f\),这个 \(f\) 称为是 \(\text{Hash}\) 函数. 我们希望这个函数 \(f\) 可以方便地帮我们判断两个字符串是否相 ...
- Jmeter计数器
计数器(Counter)配置起点.最大值和增量,计数器将从开始循环到最大值,然后从头开始,继续这样直到测试结束 1.计数器 是可以根据线程计数的.组件路径[线程组->配置元件->计数器] ...
- cpu亲和性相关函数和宏 基础讲解[cpu_set_t]
cpu亲和性相关函数和宏讲解: 写在前面: 我在查找关于linux cpu宏函数没看到有对宏函数基础的.详细的讲解,笔者便通过官方文档入手,对次进行的翻译和理解希望能帮到对这方面宏有疑惑的读者 exp ...
- 硬件开发笔记(二十九):TPS54331电源设计(二):12V转3.3V和12V转4V原理图设计
前言 电源供电电路设计很重要,为了更好的给对硬件设计有需求的人,特意将电源设计的基础过程描述出来. 紧接前一篇12V转5V的,本篇设计常用的12V转3.3V电路,不常用的12V转4V电路. ...
- 【BatchProgram】 读取文本批量创建目录
NameList.txt文件内容 FILE-NAME-A FILE-NAME-B FILE-NAME-C ... 根据上面文件批量创建对应的目录,且附加序号 CMD代码: @ECHO OFF SETL ...
- 【JDBC】Extra03 PostgreSQL-JDBC
PostgreSQL的JDBC实现: <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql --> <d ...
- Blazor Web 应用如何实现Auto模式
本文介绍Blazor Web应用Auto交互呈现模式的实现方案,如下示例是基于 Known 框架来实现的,该解决方案共有3个项目,具体实现步骤如下: 1. 前后端共用项目 创建前后端共用类库项目Sam ...
- 人工智能Python代码的补全利器 Kite 安装
代码补全应用kite主要对Python代码进行补全,或者说kite是针对现在的人工智能Python代码(pytorch.tensorflow)等做补全的,而且在Python代码补全上kite可以说是现 ...
- baselines算法库的安装——Ubuntu20.04系统使用anaconda环境配置
baselines算法库不做过多介绍,个人认为这是公开是所有reinforcement learning算法库中最权威的,虽然没有后期更新,也就是没有了学术界的state of the art , ...