
二叉堆
楚颜a
现大一,一枚小up主,B站id:一只楚颜,很迷切掉一道题的成就感!
展开
-
c++ 二叉堆讲义(CMB整理)
第一次写这么详细的讲义,希望能帮到大家加深对二叉堆的理解 二叉堆 一、堆的描述 习惯上,我们将二叉堆简称为“堆”,二叉堆是以数组存储的完全二叉树,是一种实现优先队列(priority queue)的数据结构 优先队列是至少允许插入(insert)和删除最小项(或最大项)(deleteMin or deleteMax)两种操作,有时我们可以添加一些其他的操作,但不属于优先队列基本模型的一部分 1、 ...原创 2019-08-22 16:38:23 · 327 阅读 · 0 评论 -
【模板】二叉堆(手写堆)
定义一个堆: int heap[maxn] ; //存储堆 int len; //堆中元素个数 将一个数插入堆: 在堆中插入元素x 首先将元素x放到堆中的最后一个位置(即最底层最右边的位置),然后不断地把x往上调整,直到x调不动为止(即大于它现在的父亲,或者x处于根结点) void insert(int x) //将x放进堆 { heap[++len]=x; //把当前数...原创 2019-08-22 16:42:40 · 342 阅读 · 0 评论 -
【题解】中位数
题目来源:洛谷 思路: 维护两个堆,一个是大根堆,,一个是小根堆,小根堆的堆顶是较大的数中最小的,大根堆的堆顶是较小的数中最大的,这样一来答案就是小根堆的堆顶,因为小根堆内的元素个数要不就是等于大根堆的元素个数(当i为偶数时),要不就是比大根堆的元素个数多1(当i为奇数时) code: #include<bits/stdc++.h> using namespace std; int ...原创 2019-08-22 19:33:00 · 187 阅读 · 0 评论