![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 70
数据结构解析
{∞}
自然选择,前进四!
展开
-
【c++提高1】树状数组
1.树状数组简述2.树状数组的思想3.基础问题的扩展:树状数组求任意区间4.树状数组代码实现。原创 2023-02-07 19:30:24 · 613 阅读 · 1 评论 -
【c++入门(2)】并查集
并查集(Union Find Set):是一种用于处理分离集合的抽象数据类型。主要包含2种操作:查询(Find):给定一个x,判断x属于哪个集合。合并(Union):给定x和y,讲x所在的集合与y所在的集合合并。在顺序表实现中,使用数组记录每个元素所属的集合代表。A[i] = j,表示元素i所属集合的代表为j① 初始化:make-set(x):设置A[x] = x,N个元素的时间复杂度O(N)。② 查找:find(x):返回A[x]的值,时间复杂度O(1)。③ 合并:union(y, x):如果x原创 2022-07-05 13:10:43 · 1162 阅读 · 0 评论 -
大鱼吃小鱼 C++ - 栈与非栈
问题描述有N条鱼,每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右。游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼。从左到右给出每条鱼的大小和游动的方向。问足够长的时间之后,能剩下多少条鱼?输入描述第一行一个整数N。之后N行,每行有一个整数和一个字符组成。整数表示鱼的大小;字符表示鱼游动的方向为L或者R,L表示向左,R表示向右。输出描述一个整数,表示最终剩下的鱼的数量。输入样例54 L3 R2 L1 R5 L输出样例2数据范围N<=2000这道题呢来一看原创 2022-02-19 13:56:43 · 1995 阅读 · 0 评论 -
【Acwing.828】模拟栈
Code:原创 2022-06-04 22:34:37 · 83 阅读 · 0 评论 -
【c++入门(2)】队列和栈
一、队列队列是zhi’yun’xu’zai一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种线性表,简称FIFO。最早进入队列的元素最早离开。允许插入的一端叫做“队尾”,允许删除的一端叫做“队头”。shi意图:接下来画几张图操作si例:现在来看看它的另一面这个时候我们就可以使用循环队列啦接下来我们简单认识一下循环队列的基本操作二、栈老样子,我们来看看栈的实现与操作三、STLqueue我们已经学了,我就不讲了。这次我们来学习stack和deque1.de原创 2022-04-19 20:46:47 · 731 阅读 · 0 评论 -
【c++刷题Day2】专题3栈与队列&单调栈与单调队列T2
小科在你的帮助下,破解了第一道密码门,正要往前走,突然又出现了一个密码门,门上有一个算式,其中只有“(”,“)”,“0-9”,“+”,“-”,“*”,“/”,“^”,求出的值就是密码。小科数学学得不好,还需你帮他的忙。(“/”用整数除法)这是C++刷题的Day2。共1行,为一个算式。使用栈进行表达式计算。......原创 2022-08-15 17:10:05 · 110 阅读 · 0 评论 -
【c++刷题Day2】专题3栈与队列&单调栈与单调队列T4
用对于H[i],要看它最多能延申到哪里,可以用单调栈维护即可。这是C++刷题的Day2。原创 2022-08-15 17:21:15 · 107 阅读 · 0 评论 -
【c++入门(2)】队列和queue
1.队列将队列我们先看一看线性结构:【定义】线性结构中的数据元素之间是一对一的关系。举个例子:定义:【特点】存在唯一的一个被称为“第一个”的数据元素存在唯一的一个被称为“最后一个”的数据元素除第一个之外,每个数据元素都只有一个前驱除最后一个之外,每个数据元素都只有一个后继说完了线性结构,再来看队列:【定义】队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First InFirst Out)的线性表,简称FIFO,最早进入队列的元素最早离开。允许插原创 2022-04-12 21:29:25 · 2108 阅读 · 0 评论 -
【c++刷题Day2】专题3栈与队列&单调栈与单调队列
实时的维护一个单调的内部序列,最后队首就是当前的最小值&最大值。这是C++刷题的Day2。原创 2022-08-15 17:27:31 · 127 阅读 · 0 评论 -
【c++刷题Day2】专题3栈与队列&单调栈与单调队列T1
当type = 1时,表示该次操作为push操作,val表示进入的数字。当type=2时,表示该次操作为pop操作,val代表出来的数字。输出改组数据对应的线性结构,”Stack” 或者 “Queue”。模拟栈和队列,每次检查栈的栈顶元素和队列的队头元素是否匹配即可。第一行,一个整数n,代表操作的次数。给出一个线性结构的进出顺序,判定这个结构是栈还是队列。不同的是,栈是”先进后出”,而队列则是”先进先出”。第一行输入一个整数T,代表有T组测试数据,T......原创 2022-08-15 17:05:32 · 288 阅读 · 0 评论 -
【c++提高1】优化DP专题:状压DP & 倍增优化DP & 环形DP的单调队列优化DP
这是c++提高的第一讲动态规划是解决“多阶段决策最优化问题”的一种算法思想。阶段的划分决定了状态的定义,状态定义的一个重要特性就是要确保**“无后效性”。**很多DP问题在定义状态的时候,为了确保无后效性,需要在状态中加入多个维度,如果每个维度都用一维数组来表示的话,当维度较多时会导致占用的空间太大。很多时候状态的维度虽然很多,但是决策非常少,特别的很多时候只有两种决策。例如背包问题中每个物品只有0和1两种决策。对于这种情况,没有必要为每个维度都分配一维空间,而是用一个二进制数来存储所有维度,每个二进制原创 2022-07-11 12:07:29 · 741 阅读 · 1 评论 -
【c++刷题Day2】专题3栈与队列&单调栈与单调队列T3
小科上了初中,开学的第一周是新生军训,小科的教官在进行队列训练时方法非常特殊。一开始N名学生按照顺序从1到N开始编号并排成一个横队。训练时按照如下的规则:从队头开始1至2报数,所有报到2的人出列,剩下的向编号小的方向靠拢,然后再从头开始进行1至3的报数,所有报到3的人出列,剩下的向编号小的方向靠拢,然后循环的进行1到2报数…1到3报数,直至剩余的人数不超过3人为止。最后请你确定一下最终队伍中剩下的人的编号是多少。第一行一个整数T,表示测试数据的组数。对于每组数据,输出一行,队伍中最终剩余的同学的编号。...原创 2022-08-15 17:15:04 · 166 阅读 · 0 评论 -
【c++提高1】数据结构之线段树详解
线段树的思想是将一个区间[1, n]划分成两个区间:[1, n/2]和[n/2+1, n],接下来继续划分:[1, n/4], [n/4+1,n/2]和[n/2+1, n/2+n/4-1], [n/2+n/4,n]…示例:n = 81.pushup函数2.pushdown3.build4.modify5.query1.线段树的儿子存储2.线段树的节点信息存储定义一个结构体,里面存储改节点信息和当前这个节点所管辖的区间的左右端点。1.建树函数build递归建树。怎样判断当前节点是叶子节点呢?2.查原创 2022-09-09 21:04:12 · 1717 阅读 · 0 评论 -
【c++提高1】数据结构之单调栈
单调栈是栈的一种特殊的形式,必须要求栈内元素单调,当题目有单调性的话(不是答案具有单调性,是信息具有单调性),一般可以使用单调栈,避免重复执行不必要的操作,从而将时间复杂度降低。单调栈没有什么特定的算法,也没有啥模板,所以就不讲太多关于单调栈算法一类的东西了就将一些例题吧。原创 2022-08-23 16:52:36 · 801 阅读 · 3 评论 -
【c++提高1】数据结构之分块(预处理+暴力)
1.分块思想2.分块实现操作。原创 2022-09-06 21:11:22 · 446 阅读 · 4 评论 -
【c++提高1】数据结构之哈希表
1.哈希表存储方式2.哈希表应用:散射表3.哈希表变形:字符串哈希4.例题。原创 2022-09-06 13:30:46 · 572 阅读 · 9 评论