pair<int,int>是一个类型 pair<int,int>A 表示定义一个pair<int,int>A 这时候就可以在A这个位置存两个数啦访问它们的时候就A.first/A.second // queue<pair<int,int> queue<pair<int,int> 优先队列 prior ...
分类:
其他好文 时间:
2017-11-09 22:26:13
阅读次数:
86
点击这里了解什么是priority_queue 前言 priority_queue默认是大根堆,也就是大的元素会放在前面 例如 它的输出结果是 那如何让priority_queue支持小根堆呢?:question: 方法一 将所有的数全部取负 这样的话绝对值小的数会变大,绝对值大的数会变小 这样就能 ...
分类:
其他好文 时间:
2017-11-07 20:52:27
阅读次数:
226
package algorithm; public class LargeHeapSort { /** * 对数组进行调整,使得arr[low]成为low-len最大的 * @param arr * @param low 当前二叉树(堆的一部分)的根 * @param len 数组的长度 */ pu... ...
分类:
编程语言 时间:
2017-11-04 13:18:49
阅读次数:
188
Description 世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生。最近,小X就因为航空管制,连续两次在机场被延误超过了两小时。对此,小X表示很不满意。 在这次来烟台的路上,小 X不幸又一次碰上了航空管制。于是小 X开始思考关于航空管制的问题。 假设目前被延误航班共有 n ...
分类:
其他好文 时间:
2017-11-01 20:40:35
阅读次数:
147
题目描述: 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。 分析: 建一个K大小的大根堆,存储最小的k个数字。 先将K个数进堆,然后调整堆为大根堆。 之后每加一个数,就和堆的根结点比较。 如果大于堆的根结点,则忽略。否则,替换 ...
分类:
其他好文 时间:
2017-10-30 23:55:21
阅读次数:
429
原文:什么是“堆”,"栈","堆栈","队列",它们的区别 堆:什么是堆?又该怎么理解呢? ①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值; ·堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根 ...
分类:
其他好文 时间:
2017-10-29 12:44:46
阅读次数:
104
因为根的实现方法(优先队列)默认为大根堆,即从大到小排列,所以在需要的时候需要手写小根堆。 题目描述 如题,初始小根堆为空,我们需要支持以下3种操作: 操作1: 1 x 表示将x插入到堆中 操作2: 2 输出该小根堆内的最小数 操作3: 3 删除该小根堆内的最小数 输入输出格式 输入格式: 第一行包 ...
分类:
其他好文 时间:
2017-10-27 22:28:09
阅读次数:
194
一、简介 堆排序(HeapSort)是选择排序的改进版,它可以减少在选择排序中的比较次数,进而减少排序时间,堆排序法用到了二叉树的技巧,它利用堆积树来完成,堆积是一种特殊的二叉树,可分为大根堆和小根堆。 大根堆需要具备的条件: 它是一棵完全二叉树 所有节点的值都大于或等于它左右子节点的值 树根是堆积 ...
分类:
编程语言 时间:
2017-10-19 12:38:50
阅读次数:
153
学习参考:堆排序 Heap Sort、排序六 堆排序 堆结构:一棵完全二叉树。大根堆:K[ i ] < K[ 2i ] 、K[ i ] < K[ 2i+1 ] 。小根堆反之。 本文测试数据:《严奶奶数据结构》P281 由于笔者学业繁忙,没有编写使树形结构可视化的代码。各位读者请心中脑补。 堆调整函数 ...
分类:
编程语言 时间:
2017-10-09 14:11:01
阅读次数:
202
经典题型,贪心算法。我们用大根堆来维护前k个元素中选最多个数,所需时间的最小值。 先按照结束时间排序,然后从第一个开始枚举。 如果现在的所需时间的总和小于等于这个建筑的最晚开始加工时间,那么就维修,把所需时间放入大根堆中。 否则就判断这个建筑的所需时间是否小于大根堆的堆顶元素,如果是,就弹出堆顶元素 ...
分类:
其他好文 时间:
2017-09-25 14:34:32
阅读次数:
127