贪心,按t+w排序维护不一定放到拖车上的大根堆。 ...
分类:
其他好文 时间:
2016-09-05 16:48:03
阅读次数:
154
思路: 可以开两个堆:一个大根堆,维护 1~~i-1小的数,一个小根堆维护 i~~N小的数。 当每次查询时,输出小根堆顶,从小根堆取最小数到大根堆; 如果更新时小根堆顶小于大根堆顶,交换两堆顶,维护大根堆。 但是,虽然每次输出小根堆顶元素的时候顺便把最小的元素移到大根堆,但在下一个get之前的add ...
分类:
其他好文 时间:
2016-09-04 17:34:15
阅读次数:
155
堆排序基本概念堆是一种数据结构,它是将一些数据放在物理数据结构:数组或者vector中;逻辑数据结构是完全二叉树。如果根节点的值大于两个子节点值,就是大根堆;如果根节点的值小于两个子节点值,就是小根堆。用堆这种数据结构来实现排序,就是堆排序。该算法的操作主要有minheapify:最小堆处理,复杂度... ...
分类:
编程语言 时间:
2016-08-31 17:11:39
阅读次数:
253
堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最小者的堆称为小根堆。 根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大根堆。 http://www.cnblogs.com/hua ...
分类:
其他好文 时间:
2016-08-15 07:50:04
阅读次数:
175
题目:给定一个无序整数数组arr,找到其中最小的k个数 要求:如果数组arr的长度为n,排序之后自然可以得到最小的k个数,此时时间复杂度与排序的时间复杂度相同均为O(NlogN),本题要求实现时间复杂度为O(NLogK). 1.O(NLogK)的方法,即一直维护一个有k个数的最大的大根堆,这个堆是目 ...
分类:
编程语言 时间:
2016-08-14 23:48:24
阅读次数:
473
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1689 一开始想枚举逛街的终点,然后开两个大根堆维护b值,分别保证喜爱店不少于k,以及在此前提下逛到的店尽可能多。具体实现是维持第一个堆元素数为k,每加入一个元素 ...
分类:
其他好文 时间:
2016-08-08 22:50:06
阅读次数:
221
1.实时中位数 leecode 295 /* * solution : * 1.利用PriorityQueue新建两个堆,一个大根堆maxHeap(需要自己实现比较器),一个小根堆minHeap * 2.插入元素时,让大根堆的堆顶元素始终小于等于中位数,小根堆的堆顶元素始终大于中位数 * 3.所以元 ...
分类:
其他好文 时间:
2016-07-29 17:13:02
阅读次数:
215
大根堆的定义:1 大根堆是一个大根树 2 大根堆是一个完全二叉树 所以大根堆用数组表示是连续的,不会出现空白字段。 对于大根堆的插入 对于大根堆的插入,可以在排序前确定大根堆的形状,可以确定元素5从位置6插入,那么比较元素5和位置3的元素2, 元素5比元素2大,将2下移。接着比较元素5和元素20,一 ...
分类:
其他好文 时间:
2016-07-13 20:27:52
阅读次数:
215
题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 思路1:我们通过快排找到第k个数,然后比他的小的都在左边,比他大的都在右边。 思路2:应对大数据的情况,首先取数组中前k个数字建立大根堆,建立堆之后,从第k+1个元素开始 ...
分类:
其他好文 时间:
2016-07-01 16:22:03
阅读次数:
138
Treap树算是一种简单的优化策略,这名字大家也能猜到,树和堆的合体,其实原理比较简单,在树中维护一个"优先级“,”优先级“ 采用随机数的方法,但是”优先级“必须满足根堆的性质,当然是“大根堆”或者“小根堆”都无所谓,比如下面的一棵树: 从树中我们可以看到: ①:节点中的key满足“二叉查找树”。 ...
分类:
其他好文 时间:
2016-06-26 00:33:05
阅读次数:
223