调整大根堆(只考过一次) 1. 大根堆实际上还是数组 2. 双亲结点,左孩子结点,右孩子结点为一组 3. 先寻找最后的一组 4. 每一次先比较两个孩子谁大 5. 然后较大的孩子与双亲比较 6. 双亲大,就跳到下一组,直到根 7. 孩子大,交换孩子,双亲。 8. 检查受改变的孩子的组有没有变 ...
分类:
编程语言 时间:
2019-10-16 20:03:20
阅读次数:
102
堆满足的条件:1,是一颗完全二叉树。2,大根堆:父节点大于各个孩子节点。每个节点都满足这个道理。小根堆同理。 parent = (i-1)/2 #i为当前节点 left = 2*i+1 right = 2*i + 2 堆可以分为大根堆和小根堆,这里用大根堆的情况来定义操作:(1)大根堆调整(max_ ...
分类:
编程语言 时间:
2019-10-14 16:13:54
阅读次数:
98
优先队列的实现是一个大根堆,所以每次 push(x)/pop() 操作的时间复杂度是 O(logn),log以2为底,n是该优先队列中的元素个数 优先队列中的元素一定要定义小于号,C++中自带的类型 int,char 等已经定义好小于号了 http://www.luyixian.cn/news_sh ...
分类:
编程语言 时间:
2019-10-06 00:49:38
阅读次数:
132
1 堆的概念 堆是一棵顺序存储的完全二叉树。 其中每个结点的关键字都不大于其孩子结点的关键字,这样的堆称为小根堆。 其中每个结点的关键字都不小于其孩子结点的关键字,这样的堆称为大根堆。 举例来说,对于n个元素的序列{R0, R1, ... , Rn}当且仅当满足下列关系之一时,称之为堆: (1) R ...
分类:
编程语言 时间:
2019-10-03 16:04:06
阅读次数:
115
1,简介 SPL,全称 Standard PHP Library 中文是 标准PHP类库。是php内置的一些拓展类和拓展接口,其内容包含数据结构、迭代器、接口、异常、SPL函数,文件处理等内容。SPL拓展只能用于PHP5.3版本及以后,并且不需要进行额外的配置,可以直接使用。详细信息可以进入PHP官 ...
分类:
Web程序 时间:
2019-09-28 14:49:25
阅读次数:
119
今天我再写了一次大根堆,一些问题我就记在heap4了,heap2是自己写的并且能ac的。 记得明天再写一遍,确实还有不少问题。 1,关于大根堆的问题。 一,algorithm头文件用在哪里 二,define RI LE DAD 这几个东西的深入理解。 、 三,struct 中 modify 和rep ...
分类:
其他好文 时间:
2019-09-28 01:06:07
阅读次数:
111
堆优化的贪心,考虑种一棵树的最大收益,种了当前树两旁的树之后的收益为a[i-1]+a[i+1]-a[i] 用双向链表维护住左右关系,大根堆则可以“反悔”,维护另一个记录某个坑能不能种树的数组即可 代码: ...
分类:
其他好文 时间:
2019-09-22 12:41:56
阅读次数:
68
【timegate】 https://www.luogu.org/problem/P1168 【解题思路】 使用两个堆,大根堆维护较小的值,小根堆维护较大的值 即小根堆的堆顶是较大的数中最小的,大根堆的堆顶是较小的数中最大的 【code】 ...
分类:
其他好文 时间:
2019-09-22 01:15:07
阅读次数:
77