首页 > 其他分享 >HeaderFile 1.2 中 hct.h 使用教程

HeaderFile 1.2 中 hct.h 使用教程

时间:2024-09-12 11:47:02浏览次数:1  
标签:HCT srand hct 1.2 int create HeaderFile 生成 函数

下载

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(){
	
}

标签:HCT,srand,hct,1.2,int,create,HeaderFile,生成,函数
From: https://www.cnblogs.com/HaneDaCafe/p/18409847

相关文章

  • 酷柚易汛生产管理系统​V1.2.3
    生产管理系统,帮助企业数字化转型,打造智能工厂,企业量身开发的一套完整的生产管理系统。主要包含以下模块:购货模块、生产模块、仓库模块、资料模块,可配合酷柚易汛进销存无缝衔接使用。提供全部无加密服务端和前端源代码,支持私有化部署。V1.2.31、修复付款单无法新增预付款......
  • fastjson1.2.24反序列化漏洞复现 CVE-2017-18349
    1.准备:1.1复现环境漏洞环境:vulnhub靶场工具准备:jdk8,apache-maven-3.9.9,kali2024.1,MarshalSec1.2环境启动进入vulnhub目录下的fastjson目录,进入CVE-2017-18349目录cd/home/hbesljx/vulhub/fastjson/1.2.24-rcedocker-compoe启动漏洞环境docker-composeup-d访问靶机......
  • 沃德商协会管理系统​V4.1.2
    新一代数字化商协会运营管理系统,以“智慧化会员体系、智敏化内容运营、智能化活动构建”三大板块为基点,实施功能全场景覆盖,一站式解决商协会需求壁垒,有效快速建立自有数字化管理体系、提升组织管理效能、增强会员粘性、沟通连接市场,真正做到为构建有影响力的现代化智慧型组织赋能。......
  • C# 混淆加密大师1.2.5更新, 新增多个混淆选项和功能, 附免费版下载地址
    C#混淆加密大师支持 .NetFramework2.0到.NetFramework4.x,以及.NETCore2.0至最新的.NET8版本的C#程序,包括Winform、WPF、Unity游戏以及控制台程序的混淆加密,可有效保护C#程序代码,防止非法复制或篡改,保护知识产权.  特性1.支持多种不同的程序框架:包括Winform......
  • Visual Studio 2019 安装 DevExpress21.2 问题记录
    如题,VisualStudio2019Enterprise安装 DevExpress21.2。安装完DevExpress21.2后,使用 DevExpress_Universal_Patch_v2.4.8工具激活,手动选择了VisualStudio的路径,但是还是提示找不到路径。因此这种方式行不通... 于是乎,在网上找到了解决方案。找到 DevExpres......
  • 高等数学 1.2数列的极限
    目录数列极限的定义数列的概念数列极限的定义收敛数列的性质数列极限的定义数列的概念如果按照某一法则,对每个\(n\in\mathbb{N}_+\),对应着一个确定的实数\(x_n\),这些实数\(x_n\)按照下标\(n\)从大到小排列得到的一个序列\[x_1,x_2,x_3,\cdots,x_n,\cdots,\]就......
  • 【工具推荐】0x7eTeamTools v1.2(最新版) -全能的渗透测试工具,一键getshell
    工具介绍:0x7eTeamTools是一个集成了多种渗透测试功能,javafx练习,JS接口提取,漏洞检测的工具,旨在帮助用户进行高效、全面的网络安全测试。从基本的编码转换到复杂的空间测绘和漏洞检测,这款工具提供了全方位的功能支持。下载链接:链接:https://pan.quark.cn/s/8c4268ee6b79软......
  • php审计[HCTF 2018]WarmUp 1
    <?phphighlight_file(__FILE__);//这个函数会将当前PHP文件的源代码以高亮方式显示出来,便于调试或展示源代码。classemmm{publicstaticfunctioncheckFile(&$page)//这个方法接受一个引用类型的参数$page,用于检查请求的文件是否在允许的文件白名......
  • Kubernetes 1.25 containerd 环境部署 SuperMap iManager
    超图官网目提供的Kubernetes版本为1.20版本,容器运行时为docker本次部署使用已有的Kubernetes1.25版本集群,容器运行时为containerdKubernetes,containerd部署请自行了解,本次不做介绍,下面介绍在此环境上如何部署iManager11i并创建云套件1.环境介绍虚拟机CPU......
  • CASIA-OLHWDB1.0-1.2数据集解析
    OLHWDB1.0-1.2提供联机手写单字数据。OLHWDB1.0收录汉字3866个,字母数字及符号171个。其中,GB2312-80一级集(共3755个字符)收录汉字3740个。OLHWDB1.1收录GB2312-80一级集汉字3755个,字母数字及符号171个。OLHWDB1.2收录汉字3319个,字母数字及符号171个。OLHWDB1.2的汉字集(3319类)与OL......