传送门 思路:一个贪心策略就是“在不挤超过截至时间的奶牛的前提下,尽量挤奶量大的奶牛”。So我们将奶牛按截至日期从小到大排序,对于每个截至时间t,将所有截至时间为t的奶牛的奶量加入一个大根堆,只留下前t大的数,剩下的直接删去。由于priority_queue没有clear函数,所以我手写了一个堆。。 ...
分类:
其他好文 时间:
2018-08-04 20:35:45
阅读次数:
196
一、二叉堆的定义 二叉堆使用完全二叉树(其前n-1层必须被填满,第n层也要从左到右顺序填满)来实现。 在二叉堆中,所有非终端结点的值均不大于(或不小于)其左右孩子的值。 若非终端结点的值均不大于其左右孩子结点的值,这样的二叉堆叫做小根堆(下图b), 小根堆根结点的值是该堆中所有结点的最小值; 同样的 ...
分类:
其他好文 时间:
2018-07-21 17:01:03
阅读次数:
124
树的基础知识 树的定义: 树的基本术语: 二叉树的定义:二叉树是指树的度为2的有序树。左边的为左子树,右边的为右子树。 二叉树常被用于实现二叉查找树和二叉堆。 二叉树的性质: 二叉树的遍历: 二叉树的先序遍历:先遍历根节点,再遍历左子树,再遍历右子树。(第一个是根节点,最后一个所有树的最后一个节点) ...
分类:
其他好文 时间:
2018-07-19 21:19:40
阅读次数:
196
如题,二叉堆是一种基础数据结构 事实上支持的操作也是挺有限的(相对于其他数据结构而言),也就插入,查询,删除这一类 对了这篇文章中讲到的堆都是二叉堆,而不是斜堆,左偏树,斐波那契堆什么的 我都不会啊 一.堆的性质 1.堆是一颗完全二叉树 2.堆的顶端一定是“最大”,最小”的,但是要注意一个点,这里的 ...
分类:
其他好文 时间:
2018-07-13 23:44:00
阅读次数:
303
qxbt的老师发消息来说让自己预习,本来想中考完之后认真学(颓)习(废) 没办法 qxbt的老师发消息来说让自己预习,本来想中考完之后认真学(颓)习(废) 没办法 0. 数据结构图文解析系列 1. 二叉堆的定义 二叉堆是一种特殊的堆,二叉堆是完全二叉树或近似完全二叉树。二叉堆满足堆特性:父节点的键值 ...
分类:
其他好文 时间:
2018-07-01 20:58:05
阅读次数:
164
1.优先队列:一种支持删除最大元素和插入元素两种操作的数据结构。 2.当一颗二叉树的每个结点都大于等于它的两个子结点时,它被称为堆有序。 3.根结点是堆有序的二叉树中的最大结点。 4.二叉堆是一组能够用堆有序的完全二叉树排序的元素,并在数组中按照层级储存(不使用数组的第一个位置)。 5.在一个二叉堆 ...
分类:
其他好文 时间:
2018-06-27 13:50:25
阅读次数:
123
1. "序列合并" include include include using namespace std; const int maxn = 100010; int N; int A[maxn],B[maxn]; struct data { int x; int y; int val; }h[ma ...
分类:
其他好文 时间:
2018-06-08 14:08:26
阅读次数:
151
在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 ...
分类:
编程语言 时间:
2018-06-07 23:04:25
阅读次数:
286
(二叉)堆是一个数组,他可以被看成一个近似的完全二叉树。树上的每一个节点对应数组中的一个元素,除了最底层之外,该树是完全填满的,而且是从左向右填充。表示堆的数组A包括两个属性,A.length给出数组元素的个数,A.heap size表示有多少个堆元素存储在该数组中。也就是说,虽然A[1..A.le ...
分类:
编程语言 时间:
2018-05-26 23:48:59
阅读次数:
415
题目背景 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利。但是,小L对数据结构的掌握实在十分渣渣。 所以,小L当时卡在了二叉树。 题目描述 在计算机科学中,二叉树是每个结点最多有两个子结点的有序树。通常子结点被称作“左孩子”和“右孩子”。二叉树被用作二叉搜索树和二叉堆。随后他又和他人讨论起 ...
分类:
其他好文 时间:
2018-05-20 11:47:57
阅读次数:
190