码迷,mamicode.com
首页 >  
搜索关键字:小根堆    ( 310个结果
刷题215. Kth Largest Element in an Array
一、题目说明 题目215. Kth Largest Element in an Array,在一个无序数组中找第k大的元素。难度是Medium! 二、我的解答 这个题目最直观的解答是,先对数组排序,然后直接返回: 性能如下: 三、优化措施 用小根堆实现,无需多言: 上面2个方法都不是最好的办法:方法 ...
分类:其他好文   时间:2020-03-29 10:58:34    阅读次数:60
3月21日考试 题解(数据结构+区间DP+贪心)
前言:T3写挂了,有点难受。 T1 中位数 题意简述:给你一段长度为$n$的序列,分别输出$[1,2k-1]$的中位数$(2k-1\leq n)$。 其实正解是用两个堆分别为大根堆和小根堆。但我这里偷了个懒,直接由STL函数upper_bound二分查找插入数字(STL大法好 Code: #incl ...
分类:其他好文   时间:2020-03-21 23:15:27    阅读次数:84
Stall reservations(区间分组
# 题意n头牛,每头牛有一个开始吃草的时间和结束吃草的时间,当两头牛之间存在交点的时候,这两头牛不能安排在同一个畜栏吃草,求需要的最小畜栏数目和每头牛对应的畜栏方案 # 题解1) 将所有牛按开始吃草的时间排序;2) 用小根堆维护当前所有畜栏的最后一头牛的吃草结束时间;3) 如果当前的牛可以安排在右边 ...
分类:其他好文   时间:2020-03-21 23:06:08    阅读次数:60
手写堆
1 for(int i=1;i<=n;i++) 2 cin>>h[i]; 3 size=n; 4 for(int i=n/2;i;i--) 5 down(i); 6 //建堆,根据完全二叉树的性质,n/2后的都是叶子结点,只需要把所有的根结点从后往前down一遍就完成了堆的建立 7 8 9 //小根 ...
分类:其他好文   时间:2020-03-15 10:09:43    阅读次数:70
supermarket
# 题意n件商品,每个商品有利润p[ i ]和过期时间d[ i ],每天只能卖一件商品,合理安排每天卖的商品,求最大收益 # 题解贪心做法,将所有商品按照过期时间的大小排序,从小到大依次将商品加入小根堆(p为键值)加入p[i]时:1.如果p[i]的时间大于堆中元素的个数,则放入堆2.如果当前时间等于 ...
分类:其他好文   时间:2020-03-15 09:27:14    阅读次数:128
面试题-10亿个数中找出最大的10000个数(top K问题)
一个较好的方法:先拿出10000个建立小根堆,对于剩下的元素,如果大于堆顶元素的值,删除堆顶元素,再进行插入操作,否则直接跳过,这样知道所有元素遍历完,堆中的10000个就是最大的10000个。时间复杂度: m + (n-1)logm = O(nlogm) 优化的方法:可以把所有10亿个数据分组存放 ...
分类:其他好文   时间:2020-03-05 20:41:07    阅读次数:88
2.23专项测试复盘
将关键字序列50,40,95,20,15,70,60,45,80调整成一个小根堆,堆结构是15,20,60,45,40,70,95,50,80()。 解析:创建堆的基本思想:先把无序的关键字按顺序构造成完全二叉树,从最后一个分支节点开始往前,不断地利用筛选算法,将一棵棵子树调整为一个堆(让根与其左右 ...
分类:其他好文   时间:2020-02-23 20:33:06    阅读次数:98
左偏树
有点特定的知识点,不过还是需要补的 模板: int ls[N],rs[N]; int val[N],dis[N],fa[N]; //将根为x,y的两个堆合并 返回合并后的根 int merge(int x,int y) { if(!x || !y) return x+y; //此为小根堆 记得对于p ...
分类:其他好文   时间:2020-02-22 09:21:52    阅读次数:64
Solution: 题解 CF1059E Split the Tree
给出一个堆贪心解法 记点$u$的深度为$d_u(d_1=0)$,父亲为$f_u$,拥有儿子数量$es_u$。 首先找到每个点的最远延伸点(点$u$的最远延伸点记为$v_u$),借助树上倍增即可。 接下来是贪心方法 在每次链连接完后删掉这些点,那么每条链的尾端一定是一个叶子。 那么就想办法找出目前贪心 ...
分类:其他好文   时间:2020-02-21 14:47:57    阅读次数:61
库特摘果子——优先队列
这个用优先队列就可以了。 在这里补充一点优先队列和队列的知识。 优先队列 大根堆:从大到小排列。小根堆:从小到大排列。优先队列就是堆,也可以自己手写堆。// 小根堆的写法priority_queue<int,vector<int>,greater<int> > vis;// 大根堆的写法priori ...
分类:其他好文   时间:2020-02-16 16:09:34    阅读次数:70
310条   上一页 1 2 3 4 5 6 ... 31 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!