
二叉查找树
“二叉查找树”学习
CCCCDEV_CCCC
志在四方少年,羡慕南飞的雁
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1090 合并果子
其实你只要搞懂这个数据样例就能明白了。二叉堆的思想我好象还有点记忆。合并果子是一个堆操作。原创 2022-07-20 19:11:36 · 105 阅读 · 0 评论 -
1030 求先序排列
所以我们从后序中获得一个根,输出,然后从中序中找到进行二分递归。很简单,从后序找根,再从中序中找出根进行解决。尽管很绝对,但是后序的最后一个肯定是根。板子,给中序后序,求先序序列。...原创 2022-07-16 13:39:44 · 96 阅读 · 0 评论 -
1628 合并序列
1628 合并序列 模拟 题目很水,不愧是橙题,首先这里说一个黑科技,真的科技中的科技,sort排序是可以排字符串的字典序的,所以这个题本来以为是个王者结果是个青铜,所以题目要求按照字典序输出,直接排序就好,对于判断前缀,只需要使用find 函数,因为前缀的串永远都在第一位,所以只需要判断find返回的位置是否为0就好 #include<iostream> #include<cstdio> #include<algorithm> using namespace std;原创 2021-07-28 11:10:21 · 142 阅读 · 0 评论 -
1631 序列合并
1631 序列合并 个人感觉,二叉堆类型的题都很类似 这道题和之前做过的一些题非常的类似,如果用暴力很好就能做出来,得64分,详细得看代码 #include<iostream> #include<cstdio> #include<algorithm> #include<queue> #include<cmath> using namespace std; const int SIZE=1e5+5; int n; long long a[SIZE],原创 2021-07-28 10:42:56 · 94 阅读 · 0 评论 -
1456 超市
1456 超市 题目 给定n个物品,每一个物品都有利润pi和过期时间di 每天只能卖出一个物品,过期就不能卖了,如何安排卖的商品,才能使得利润最大 这个题第一感觉用贪心或者动态规划来解决,感觉和堆并没有多大的关系 贪心 如果使用贪心来解决,那么思路就是比较明确的了,按着贪心的思想优先考虑利润大的商品,然后按着这一段时间为期限,只要不过期然后尽量地卖,贪心的精髓就体现在这里了,最后不要忘记加上利润输出就好了 #include<cstdio> #include<algorithm> #i原创 2021-07-27 12:47:27 · 120 阅读 · 0 评论 -
1878 舞蹈课
1878 舞蹈课 这个题的题目还是很简单的,但是实现起来不太好操作 这个题的思路就是讲异性的两个人入堆并且利用重构和结构体保存两个人的差,然后每次从堆顶取出来,表示找到答案,然后再通过这两个点寻找没有出队的人,再次进行入堆操作 #include<iostream> #include<cstdio> #include<algorithm> #include<queue> using namespace std; const int SIZE=2e3+5; cha原创 2021-07-26 19:43:24 · 183 阅读 · 0 评论 -
1334 瑞瑞的木板
1334 瑞瑞的木板 其实很水,但是有一些小细节需要注意,,因为这个原因,会卡一个点,会卡一个点,会卡一个点 这个题其实和合并果子是一个意思,每次取出优先堆的两个点,进行求和然后再次压入堆,把所有的和加起来直至队列中只有一个元素,输出即可 但是有一个BUG,注意数据范围的大小,虽然这个大小不会炸int,但是我们想想,我们要求的是和,所以,104不会炸,但是如果累加起来绝对会炸,所以我们直接使用longlong就能AC,题目真的很水,真的很水 #include<iostream> #include原创 2021-07-26 16:57:07 · 156 阅读 · 0 评论 -
1168 中位数
1168 中位数 啊,又是一个中位数问题,本来感觉是一个水题,但是用简单的模拟就全部WA了,所以这个题就是用一个窗口限制再加上一个优先堆的问题,按照这个思路再次进行一个尝试…可是它真的不太好实现啊难道还得使用双顶堆的思想吗 是的,还是需要维护两个堆,一个大根堆,一个小根堆这个题其实和3871 中位数 类似,只不过就是需要判断在奇数的情况来输出,而且是一个一个小区间,不是总共的区间进行求中位数,还是挺水的,尽管我做了不短时间但是我还是有勇气说出这句话 维护大根堆小根堆,原理还是需要在进队的时候枚举两种情况——原创 2021-07-26 13:38:33 · 137 阅读 · 0 评论 -
0378 行有序数表第k大
行有序表第k大 题目 首先先来分析这道题的难点在哪里,他的难点是因为这个矩阵的各个元素都是在自序列有序而不是总系列有序,所以可能很难进行维护 但是很好的就是,一个单独的行是有序的,所以每一行的最后一个数肯定是最大的,然后我还得将k对每行数的个数进行比较,例如,我们要找第8大的数,所以如果第一行第二行都小于8那么我们的答案肯定不在第一行第二行 ...原创 2021-07-26 08:56:46 · 141 阅读 · 0 评论 -
3871 中位数
3871 中位数 这个题做了一个中午了,还是不会,我服气了 维护中位数,就得利用对顶堆来解决,对顶堆就是维护两个堆,从而进行解决我们想要的问题 因为说到中位数,所需要 利用一个大根堆一个小根堆,小根堆放n/2个元素,大根堆放n-n/2个元素 这样就能保证堆顶是就是中位数 ...原创 2021-07-25 19:00:04 · 218 阅读 · 0 评论 -
二叉堆
二叉堆 二叉堆支持 插入,删除,查询最值的数据结构,它是一棵满足堆性质的完全二叉树,树上的每一个节点都有一个权值,若儿子小于等于父亲,那就是大根堆性质;若儿子大于父亲,则满足小根堆的性质。大根堆性质的是大根堆,小根堆性质的是小根堆 这么说,我就会了 其实二叉堆就是一个类似一种排序方法,堆排序,这种算法不难 一个节点编号i,左儿子节点2i,右儿子节点2i+1,这个知识点在初赛就学过了 既然我们说过它的操作有三种,那么我们就来详细地了解一下 插入 这个操作是最基本地,在了解这个操作的时候,一定明白堆这个数据结原创 2021-05-03 18:48:55 · 102 阅读 · 0 评论 -
二叉查找树
二叉查找树 二叉查找树,是一种基于堆性质的数据结构 给定一颗二叉树,树上的每个节点都会有一个值,然后对于每一个节点,都有如下性质: 1.这个节点不小于左儿子 2.这个节点不大于右儿子 那么上面性质就是一个二叉查找树(BST),然后要想进行排序,只需要走一下中序遍历 BST的建立 为了方便比较,我们一般在BST额外插入一个节点负无穷和一个节点正无穷,方便比较大小 struct BST { int l,r; int date; } a[size]; int tot,root,INF=99999999;原创 2021-07-04 12:26:27 · 82 阅读 · 0 评论