下载

HeaderFile 1.2

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 使用教程的更多相关文章

  1. 关于apue.3e中apue.h的使用

    关于apue.3e中apue.h的使用 近来要学一遍APUE第三版,并于此开博做为记录. 先下载源文件: # url: http://http//www.apuebook.com/code3e.htm ...

  2. cocos2dx 3.7中 AppDelegate.h的class TestController;这种写法的具体意思不太明白,只能猜是类似于外部定义的东西。

    cocos2dx 3.7中 AppDelegate.h的class TestController;这种写法的具体意思不太明白,只能猜是类似于外部定义的东西.

  3. 彻底弄清c标准库中string.h里的常用函数用法

    在我们平常写的c/c++程序,一些算法题中,我们常常会用到c标准库中string.h文件中的函数,这些函数主要用于处理内存,字符串相关操作,是很有用的工具函数.而且有些时候,在笔试或面试中也会出现让你 ...

  4. 解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载

    解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载 当这两个头文件顺序颠倒时,编译会出现许多莫名其妙的错误,错误如下: 1>…\include\ws2def.h( ...

  5. MFC中快速应用OpenCV教程

    论坛上看到非常经典的VS2008 + OpenCV 2.0下的配置过程: (这里用的是opencv2.0) 1. 文件 | 项目 | MFC | MFC应用程序 |(新名称如MFCtest)|next ...

  6. [Python][flask][flask-wtf]关于flask-wtf中API使用实例教程

    简介:简单的集成flask,WTForms,包括跨站请求伪造(CSRF),文件上传和验证码. 一.安装(Install) 此文仍然是Windows操作系统下的教程,但是和linux操作系统下的运行环境 ...

  7. 《阿里巴巴Java开发手册》代码格式部分应用——idea中checkstyle的使用教程

    <阿里巴巴Java开发手册>代码格式部分应用--idea中checkstyle的使用教程 1.<阿里巴巴Java开发手册> 这是阿里巴巴工程师送给各位软件工程师的宝典,就像开车 ...

  8. Ubuntu中NS2安装详细教程

    前言: NS2是指 Network Simulator version 2,NS(Network Simulator) 是一种针对网络技术的源代码公开的.免费的软件模拟平台,研究人员使用它可以很容易的 ...

  9. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

  10. MVC中使用SignaIR入门教程

    一.前言:每次写总要说一点最近的感想 进入工作快半年了,昨天是最郁闷的一天,我怀疑我是不是得了"星期一综合征",每个星期一很没有状态.全身都有点酸痛,这个可能一个星期只有周末才打一 ...

随机推荐

  1. 使用with 还是 join

    用分解关联查询的方式查询具有以下优势:多次单表查询,让缓存的效率更高:许多应用程序可以方便地缓存单表查询对应的结果对象.对 MYSQL 的查询缓存来说,如果关联中的某个表发生了变化,那么就无法使用查询 ...

  2. h5py文件写入之——flush和update

    技术背景 在前面的一篇博客中,我们介绍过使用VMD可视化H5MD标准化格式的轨迹文件的方法.H5MD本质上就是一个有规范格式的hdf5二进制文件,本文主要介绍两个关于hdf5的内容更新操作. 写入和更 ...

  3. docker 构建镜像拉取镜像生成实例

    实战tomcat镜像 准备镜像文件 编写dockerfile 首先将tomcat和jdk软件包上传 创建tomcat文件夹,将文件传送到tomcat文件夹 创建Dockerfile(不用加-f指定)文 ...

  4. 【Vue】04 模块化开发演变

    JS最初的目的是用来做表单验证和动画效果,可以让网页更加生动. 但是使用Ajax,前后端分离,页面承担了更多的事情,JS的代码量暴增,代码管理维护逐渐困难 我们需要将JS代码抽取出来,模块化处理, 但 ...

  5. OneFlow是否真的实现了单机代码无侵害的运行在分布式集群上?

    答案: 不是,但也是. 严格意义上来说,不是. 因为技术OneFlow的代码,要从单机改到分布式,也需要改配置,需要给所有的变量设置具体的全局存储还是局部存储,如果局部存储又应该如何划分,等等,这些其 ...

  6. 安装windows11的注意事项

    进入到安装界面后,在选择时间和货币格式的时候选择:英语(世界),据说这样可以避免第三方软件的安装. KMS命令: slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX sl ...

  7. 【转载】 tmux 向上向下翻页,翻屏

    作者:江河湖海洋链接:https://www.jianshu.com/p/8835f2d4245f来源:简书著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. =========== ...

  8. python语言:将多张图片压成一段视频——利用opencv-python库实现

    相关代码例子参见: All_finished_Demo.py ========================================= 这里将的功能就是用python语言实现将多张照片压成一 ...

  9. OI之奇葩错误

    链式前向星(写法 \(1\)):\(head\) 数组不初始化成 \(-1\).(同学写题) 链式前向星(写法 \(2\)):\(idx\) 不初始化成 \(1\).(同学写题) 用到队列时忘记 \( ...

  10. 023.Ubuntu常见个性化配置

    root登录设置 ubuntu默认关闭了root账户,可根据实际情况开启或关闭root登录. ubuntu@localhost:~$ sudo apt install openssh-server u ...