堆
文章平均质量分 52
化身孤岛的鲸o
我祈祷拥有一颗透明的心灵
展开
-
什么是堆?(堆的介绍)
一、定义堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:(1)堆中某个节点的值总是不大于或不小于其父节点的值;(2)堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。堆是非线性数据结构,相当于一维数组,有两个直接后继。堆的定义如下:n个元素的...原创 2020-01-07 13:51:25 · 3490 阅读 · 0 评论 -
洛谷 P2278 [HNOI2003]操作系统 优先队列
洛谷 P2278 [HNOI2003]操作系统 优先队列思路:用优先队列q来模拟cpu,最开始时cpu中没有进程,因此,我们把第一个进程放进去,第二个进程进来时会有选择,有几种可能:(1)要进入的进程的开始时间在前面那个进程结束时间之后,我们相当于可以直接结束此时cpu中的进程,将时间节点更新为当前结束时间(2)当前cpu中进程的结束时间在要进来的这个进程开始时间之后,这是我们选择比较优先...原创 2020-01-07 23:01:50 · 162 阅读 · 0 评论 -
洛谷 P1484 种树 思维+堆
PAT甲级 P1484 种树 思维+堆思路:很容易想到用一个大根堆来存储每个位置的获利,但我们不能每次都取出根元素后,将其两边的元素标记位不可选择,因为这个根元素两边的元素之和很可能大于这个根元素,这时我们选择的就不是根元素,而是两边的元素,所以我们要有一个反悔选择的机会,我们在选择根元素的时候,在总获利中加上其获利,并把这个根元素的获利变为两边元素的获利之和减去根元素的获利,并将这个根元素重...原创 2020-01-07 17:10:22 · 203 阅读 · 0 评论 -
洛谷 P2085 最小函数值 最小堆
洛谷 P2085 最小函数值 最小堆代码如下:#include<stdio.h>#include<iostream>#include<vector>#include<math.h>#include<queue>#define INF 0x3f3f3f3fusing namespace std;int n,m,a[100...原创 2020-01-07 21:30:01 · 204 阅读 · 0 评论 -
洛谷 P1801 黑匣子 对顶堆
洛谷 P1801 黑匣子 对顶堆题解:用两个堆来维护,一个小根堆,一个大根堆。对顶堆:可以动态维护第k大的值(比如中位数),每次操作logn如果说上面是个小根堆,下面是个大根堆,小根堆的元素都大于大根堆的元素,那么我们可以发现:每一层节点从上往下逐层递减(1)我们保证大根堆一直有i-1个元素,这样小根堆的堆顶就是第i大的元素。(2)我们首先依次向大根堆中添加元素,若达到了i个,就把大...原创 2020-01-07 15:49:41 · 256 阅读 · 0 评论 -
PAT甲级1098 Insertion or Heap Sort 模拟插入和堆排序
代码如下://模拟插入排序和堆排序#include<iostream>#include<algorithm>#include<vector>using namespace std;int n;vector<int>init;//初始的数组vector<int>goal;//当前的数组vector<int>...原创 2019-09-14 20:55:31 · 161 阅读 · 0 评论 -
PAT甲级 1147 Heaps 判断一棵完全二叉树是否是堆
题目大意:给出一个完全二叉树的层序遍历,判断该二叉树是不是一个堆,若是一个堆,则判断是最大堆还是最小堆,并输出后序遍历题解:依次检查所有节点(除了根节点)和它的父节点的关系,判断是否破坏最大堆或者最小堆的性质,如果有不满足的情况将maxl或minnl置为0,以此排除最大堆或者最小堆。后序遍历直接套板子即可。代码如下:#include<iostream>#include&...原创 2020-01-07 13:45:54 · 1115 阅读 · 0 评论