
Data Structure
Some classical data structures, such as: parallel lookup set, search tree, AC automaton
NP_hard
这个作者很懒,什么都没留下…
展开
-
splay树---板子题
文章目录问题 A: Splay —— Ver.I题目描述输入输出样例输入样例输出代码1代码2问题 B: 宠物收养所(Splay —— 前驱后继操作)题目描述输入输出样例输入样例输出提示代码问题 A: Splay —— Ver.I问题 B: 宠物收养所(Splay —— 前驱后继操作)问题 A: Splay —— Ver.I题目描述输入第一行包含一个整数n,表示初始序列的长度。 以下n行每行包含一个整数,描述初始的序列。 接下来一行包含一个整数n,表示插入操作的数目。 以下m行每行描述一个操作。原创 2020-12-19 22:54:54 · 416 阅读 · 0 评论 -
线段树及主席树---板子题
文章目录线段树及主席树个人理解线段树理解线段树模板主席树理解(可持久化线段树)问题 A: 敌兵布阵题目描述输入输出样例输入样例输出代码问题 B: 最大数题目描述输入输出样例输入样例输出代码问题 C: Distinct Characters Queries(英文题面)(线段树)题目描述输入输出样例输入样例输出代码问题 D: Kth number题目描述输入输出样例输入样例输出代码目的线段树及主席树个人理解线段树理解由于只是一个个人笔记,故这里不再赘述参考博客https://www.cnblogs.原创 2020-12-19 22:51:32 · 340 阅读 · 1 评论 -
树状数组---板子题
- 问题 A: 树状数组操作 - 问题 B: 逆序对 - 问题 C: 矩阵操作原创 2020-12-12 20:26:06 · 299 阅读 · 0 评论 -
搜索树--板子题
问题 C: 骑士题目描述国际象棋中骑士的走法如图所示。请计算给定骑士在棋盘上的起点,走到终点所需最少步数。输入每个测试包括一行,为用空格隔开的起点和终点。每个点由字母表示的列+数字表示的行组成。输出最少步数样例输入e2 e4a1 b2b2 c3a1 h8样例输出2426代码#include <iostream>#include <string>#include <sstream>#include <queue>#原创 2020-11-29 20:12:50 · 692 阅读 · 0 评论 -
跳表--板子题
问题 A: 跳表操作题目描述实现跳表数据结构,支持增加、查找和删除操作。为保证程序的可复现性,随机生成布尔结果的函数g()定义如下:g() = 0 if X_t < 8; g() = 1 if X_t >= 8, for all t >= 1,其中 X_t = (X_t-1 * a + c) % m, X_0 = 7, a=5, c=37, m=19假定跳表的第0层存放所有元素。为决定一个不在现有跳表中且待插入的新元素a,可以上升到第h层(h初始值为0),程序反复调用g(),原创 2020-11-21 15:40:58 · 341 阅读 · 0 评论 -
并查集--板子题
问题 C: 滑雪David是个滑雪初学者,他还没有学会如何在滑行过程中控制方向,也不知道如何停下来。所以他的滑行方式只能是在一个高高的雪堆上调整好向北,东,南或西移动的方向,然后直线滑下来,一直滑倒另一个雪堆底下才能停下来。他发觉以这种方式,有些雪堆他是无法到达的。因此,他现在想在已有的雪堆基础上,自己再人为地增加一些雪堆,使得他可以从任何雪堆转移到其他任何雪堆。他请求您帮他找到需要创建的雪堆的最少数量。我们假设David只能在整数坐标处堆积雪堆。输入:输入的第一行包含一个整数n(1≤n≤100)原创 2020-11-22 00:35:24 · 442 阅读 · 0 评论 -
拓扑排序及关键应用
文章目录问题 B: 图综合练习--拓扑排序题目描述--程序要求--输入输出样例输入样例输出代码问题 D: 关键路径-STL版题目描述输入输出样例输入代码问题 B: 图综合练习–拓扑排序题目描述已知有向图,顶点从0开始编号,求它的拓扑有序序列。拓扑排序算法:给出有向图邻接矩阵1.逐列扫描矩阵,找出入度为0且编号最小的顶点v2.输出v,并标识v已访问3.把矩阵第v行全清0重复上述步骤,直到所有顶点输出为止–程序要求–若使用C++只能include一个头文件iostream;若使用C语言只能i原创 2020-12-19 22:55:14 · 278 阅读 · 0 评论 -
图的最短路径
文章目录问题 A: DS图—图的最短路径题目描述输入输出样例输入样例输出代码问题 C: 追星题目描述输入输出样例输入样例输出代码问题 A: DS图—图的最短路径题目描述给出一个图的邻接矩阵,输入顶点v,用迪杰斯特拉算法求顶点v到其它顶点的最短路径。输入第一行输入t,表示有t个测试实例第二行输入顶点数n和n个顶点信息第三行起,每行输入邻接矩阵的一行,以此类推输入n行第i个结点与其它结点如果相连则为距离,无连接则为0,数据之间用空格隔开。第四行输入v0,表示求v0到其他顶点的最短路径距离以此原创 2020-12-19 22:55:05 · 521 阅读 · 0 评论 -
哈希表
文章目录t1t2t3t4t1#include<iostream>using namespace std;int* Hash;int len, num;int c = 0;void insert(int x) { int index; c = 0;//探测上限 index = x % 11; while (Hash[index] != 0&&c<=100) { index = (index + 1) % len; c++; } Hash[原创 2021-01-27 20:03:48 · 233 阅读 · 1 评论 -
各种排序的模板题
#include<iostream>using namespace std;int s[10000] = { 0 };int main(){ int n; cin >> n; for (int i = 0; i < n; i++) { cin >> s[i]; } for (int i = 1; i < n; i++) { int tmp = s[i];//待插数字原创 2020-12-28 21:32:13 · 1111 阅读 · 0 评论 -
问题 E: 货币套汇
问题 E: 货币套汇题目描述套汇是指利用货币汇兑率的差异将一个单位的某种货币转换为大于一个单位的同种货币。例如,假定1 美元可以买0.7 英镑,1 英镑可以买9.5 法郎,1法郎可以买到0.16美元。通过货币兑换,一个商人可以从1 美元开始买入,得到0.7×9.5×0.16=1.064美元,从而获得6.4%的利润。 给定n种货币c1 ,c2 ,… ,cn的有关兑换率,试设计一个有效算法,确定货币间是否存在套汇的可能性。提示:判断图上是否出现正环,即环上所有的边相乘大于1输入第一行:测试数据组数每原创 2020-11-25 14:01:37 · 1055 阅读 · 0 评论 -
问题 C: 图的顶点可达闭包
问题 C: 图的顶点可达闭包题目描述给定有向图的邻接矩阵A,其元素定义为:若存在顶点i到顶点j的有向边则A[i,j]=1,若没有有向边则A[i,j]= 0。试求A的可达闭包矩阵A*,其元素定义为:若存在顶点i到顶点j的有向路径则A*[i,j]=1,若没有有向路径则A*[i,j]= 0。输入第1行顶点个数n第2行开始的n行有向图的邻接矩阵,元素之间由空格分开输出有向图的可达闭包矩阵A*,元素之间由空格分开样例输入40 1 0 10 0 1 00 0 0 00 0 0 0样例输出0原创 2020-11-25 01:36:25 · 778 阅读 · 2 评论 -
问题 B: 道路建设 (Ver. I)
问题 B: 道路建设 (Ver. I)题目描述有N个村庄,编号从1到N,你应该建造一些道路,使每个村庄都可以相互连接。两个村A和B是相连的,当且仅当A和B之间有一条道路,或者存在一个村C使得在A和C之间有一条道路,并且C和B相连。现在一些村庄之间已经有一些道路,你的任务就是修建一些道路,使所有村庄都连通起来,并且所有道路的长度总和是最小的。输入测试数据有多组第一行是整数N(3 <= N <= 100),代表村庄的数量。 然后是N行,其中第i行包含N个整数,这些N个整数中的第j个是村原创 2020-11-25 01:32:15 · 2218 阅读 · 0 评论 -
问题 A: DS图—最小生成树
问题 A: DS图—最小生成树题目描述根据输入创建无向网。分别用Prim算法和Kruskal算法构建最小生成树。(假设:输入数据的最小生成树唯一。)输入顶点数nn个顶点边数mm条边信息,格式为:顶点1 顶点2 权值Prim算法的起点v输出输出最小生成树的权值之和对两种算法,按树的生长顺序,输出边信息(Kruskal中边顶点按数组序号升序输出)样例输入6v1 v2 v3 v4 v5 v610v1 v2 6v1 v3 1v1 v4 5v2 v3 5v2 v5 3v3 v原创 2020-11-25 01:25:48 · 709 阅读 · 0 评论 -
问题 C: 公共前缀
问题 C: 公共前缀题目描述输入一组单词,创建Trie树。输入字符串,计算以该字符串为公共前缀的单词数。(提示:树结点有26个指针,指向单词的下一字母结点。)输入测试数据有多组,每组测试数据格式为:第一行:一行单词,单词全小写字母,且单词不会重复,单词的长度不超过10第二行:测试公共前缀字符串数量t后跟t行,每行一个字符串输出每组测试数据输出格式为:第一行:创建的Trie树的层次遍历结果第2~t+1行:对每行字符串,输出树中以该字符串为公共前缀的单词数。样例输入abcd abd原创 2020-11-22 00:33:58 · 291 阅读 · 0 评论 -
问题 E: DS图—图的连通分量
问题 E: DS图—图的连通分量题目描述输入无向图顶点信息和边信息,创建图的邻接矩阵存储结构,计算图的连通分量个数。输入测试次数t每组测试数据格式如下:第一行:顶点数 顶点信息第二行:边数第三行开始,每行一条边信息输出每组测试数据输出,顶点信息和邻接矩阵信息输出图的连通分量个数,具体输出格式见样例。每组输出直接用空行分隔。样例输入34 A B C D2A BA C6 V1 V2 V3 V4 V5 V65V1 V2V1 V3V2 V4V5 V6V3 V58原创 2020-11-22 00:34:29 · 1330 阅读 · 0 评论 -
图综合练习--构建邻接表
问题B 图综合练习–构建邻接表题目描述已知一有向图,构建该图对应的邻接表。邻接表包含数组和单链表两种数据结构,其中每个数组元素也是单链表的头结点,数组元素包含两个属性,属性一是顶点编号info,属性二是指针域next指向与它相连的顶点信息。单链表的每个结点也包含两个属性,属性一是顶点在数组的位置下标,属性二是指针域next指向下一个结点。输入第1行输入整数t,表示有t个图第2行输入n和k,表示该图有n个顶点和k条弧。第3行输入n个顶点。第4行起输入k条弧的起点和终点,连续输入k行以此类推原创 2020-11-22 00:34:37 · 867 阅读 · 0 评论 -
DS--图非0面积
DS–图非0面积题目描述编程计算由"1"围成的下列图形的面积。面积计算方法是统计"1"所围成的闭合曲线中"0"点的数目。如图所示,在10*10的二维数组中,"1"围住了15个点,因此面积为15。输入测试次数t每组测试数据格式为:数组大小m,n一个由0和1组成的m*n的二维数组输出对每个二维数组,输出符号"1"围住的"0"的个数,即围成的面积。假设一定有1组成的闭合曲线,但不唯一。样例输入210 100 0 0 0 0 0 0 0 0 00 0 0 0 1 1 1 0 0 00原创 2020-11-22 00:34:54 · 2691 阅读 · 1 评论 -
DS图遍历--广度优先搜索
DS图遍历–广度优先搜索题目描述给出一个图的邻接矩阵,对图进行深度优先搜索,从顶点0开始注意:图n个顶点编号从0到n-1代码框架如下:输入第一行输入t,表示有t个测试实例第二行输入n,表示第1个图有n个结点第三行起,每行输入邻接矩阵的一行,以此类推输入n行第i个结点与其他结点如果相连则为1,无连接则为0,数据之间用空格隔开以此类推输入下一个示例输出每行输出一个图的广度优先搜索结果,结点编号之间用空格隔开样例输入240 0 1 10 0 1 11 1 0 11 1 1原创 2020-11-22 00:35:03 · 320 阅读 · 0 评论 -
DS图遍历–深度优先搜索
DS图遍历–深度优先搜索题目给出一个图的邻接矩阵,对图进行深度优先搜索,从顶点0开始注意:图n个顶点编号从0到n-1代码框架如下:输入第一行输入t,表示有t个测试实例第二行输入n,表示第1个图有n个结点第三行起,每行输入邻接矩阵的一行,以此类推输入n行第i个结点与其他结点如果相连则为1,无连接则为0,数据之间用空格隔开以此类推输入下一个示例输出每行输出一个图的深度优先搜索结果,结点编号之间用空格隔开样例输入240 0 1 10 0 1 11 1 0 11 1 1 0原创 2020-11-22 00:35:11 · 796 阅读 · 0 评论