洛谷P1168 中位数 堆 求a[ 1 ] --a[ 1 ] 的中位数 ,a[ 1 ]--a[ 3 ] 的中位数 a[ 1 ]--a[ 5 ] 的中位数 题解1、假设我们已知 a[ 1 ]--a[ i ] 的中位数 (i&1) 此时我们求 a[ 1 ]--a[ i+2 ] 的中位数 那么我们可以把比 ...
分类:
其他好文 时间:
2017-05-31 00:31:55
阅读次数:
229
OJ题号:洛谷P3697 思路: 贪心。首先从起点出发,开特急电车,对于每一个特急车站$s_{i}$,分别下一次车,计算从当前车站$s_{i}$出发坐各停电车在指定时限内$t$最远能够到达的车站$r_{i}$,并保证这个$r_{i}$不会超过$s_{i+1}$。将得到的站点$r_{i}$放入一个大根 ...
分类:
其他好文 时间:
2017-05-14 20:32:58
阅读次数:
198
4.堆排序:(大根堆) ①将存放在array[0,...,n-1]中的n个元素建成初始堆; ②将堆顶元素与堆底元素进行交换,则序列的最大值即已放到正确的位置; ③但此时堆被破坏,将堆顶元素向下调整使其继续保持大根堆的性质,再重复第②③步,直到堆中仅剩下一个元素为止。 堆排序算法的性能分析: 空间复杂 ...
分类:
编程语言 时间:
2017-05-07 00:09:48
阅读次数:
198
1、二叉堆的操作 (1)取出元素 (2)插入元素 (3)删除元素 //手写大根堆维护 #include<bits/stdc++.h> using namespace std; int heap[1000]; int up(int x) { if(heap[x]<=heap[x/2]) return ...
分类:
其他好文 时间:
2017-04-30 22:54:51
阅读次数:
241
洛谷模板题 一听左偏树这个名字就感觉左偏。。 左偏树是什么,好像就是个堆,大根堆或小根堆,可以支持合并,取堆顶元素,删除堆顶元素,插入元素的操作。 一些说明: 左偏树节点除了应有的东西,还有键值和距离,键值用于比较大小,距离是什么? 距离是这样定义的: 节点i称为外节点(external node) ...
分类:
其他好文 时间:
2017-04-17 15:43:34
阅读次数:
259
左偏树是可合并堆的一种实现方式,可合并堆还有其他实现方式比如斜堆,然而我这种蒟蒻只会写左偏树。 模板里的左偏树为大根堆,支持合并,查询堆顶和弹出堆顶操作,对于已经删除的位置,查询将返回-1,为了确保弹出的正常进行,模板里使用的并查集没有使用路径压缩,因此常数可能会比较大。 1 #include<st ...
分类:
其他好文 时间:
2017-04-14 22:02:33
阅读次数:
179
堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。 1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]或者Key[i]>=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者 ...
分类:
其他好文 时间:
2017-03-18 17:26:41
阅读次数:
170
【解题思路】 贪心,先按结束时间排序,从左到右扫描过去,如果当前建筑可以修复则入大根堆,否则,若其修复时间比堆顶小则弹出堆顶并入堆,处理完堆后则更新总时间。复杂度O(nlog2n)。 【参考代码】 1 #pragma GCC optimize(2) 2 #include <algorithm> 3 ...
分类:
其他好文 时间:
2017-03-02 23:16:38
阅读次数:
209
bzoj2006: 定义一个四元组{x,l,r,w},表示左端点在x,右端点在[l,r]的超级和弦的最大美妙度在将w作为右端点时取到,w可以用前缀和+线段树/ST表求出。 对于每个i,我们将{i,i+L-1,i+R-1,w}放入一个大根堆中,每次取出美妙度最大的一个加到答案中,并将{i,l,w-1, ...
分类:
其他好文 时间:
2017-02-23 11:39:03
阅读次数:
241
感谢 http://hi.baidu.com/%C0%B6%C9%ABarch/blog/item/f9d343f49cd92e53d7887d73.html 的博主! 思路: 我们要找到n个smallest的数,用贪心法可以解决这一问题。 (1)维护两个数组,a和b,以及一个大根堆p 循环不变式:... ...
分类:
其他好文 时间:
2017-02-05 22:39:37
阅读次数:
231