这个是以前做的打包模板了。没有用template(其实是不会),用的是class封装,默认类型为int,支持pop,top,push。 cpp include using namespace std; class Heap{ define SIZE 1000 private: int a[SIZE] ...
分类:
其他好文 时间:
2018-10-15 20:29:42
阅读次数:
129
中位数 这种题型比较常见,所以总结下来为妙。 一般暴力的方法是找到排一个序,然后输出中间点。 然后正解的方法是优先队列。 解法 一个大根堆一个小根堆,用于存储中位数左边的数和中位数右边的数。 然后每一次插入某个数的时候,可以插入到中间,然后判断左右两个堆的大小,保持均等即可。 例题 "3871 中位 ...
分类:
其他好文 时间:
2018-10-15 18:15:49
阅读次数:
151
堆:什么是堆?又该怎么理解呢? ①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值; ·堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。 ②堆是在程序运行时,而 ...
分类:
其他好文 时间:
2018-10-13 19:48:07
阅读次数:
149
"题目链接" Solution 可以考虑 $dp$ ,但是很显然 $(n^2)$ 降不下来. 然后考虑贪心,首先,绝对的正确的是,在同等的情况下,给后面的留更多的时间. 首先按照 $T_2$ 排序. 然后我们维护一个大根堆 每修理一栋建筑 我们就把这栋建筑的T1值加入堆 若当前无法修理 我们判断堆顶 ...
分类:
Web程序 时间:
2018-10-09 20:37:43
阅读次数:
168
1.优先队列 (1)大根堆(小顶堆) (2)小根堆(大顶堆) 用法 2.排序 (1)快排(STL万岁!$QwQ$) (2)结构体排序 (3)结构体内重载运算符 ...
分类:
编程语言 时间:
2018-10-06 18:32:41
阅读次数:
138
1.优先队列 (1)大根堆(小顶堆) (2)小根堆(大顶堆) 用法 2.排序 (1)快排(STL万岁!$QwQ$) (2)结构体排序 (3)结构体内重载运算符 ...
分类:
编程语言 时间:
2018-10-06 10:42:56
阅读次数:
179
题目描述: 在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果合成一堆。每一次合并,小明可以把两堆水果合并到一起,消耗的体力等于两堆水果的重量之和。当然经过 n‐1 次合并之后,就变成一堆了。小明在合并水果时总共消耗的体力等于每次合并所耗体力之和。 假定 ...
分类:
其他好文 时间:
2018-10-02 17:16:01
阅读次数:
160
我们都知道priority_queue是大根堆。 一、变成小根堆 法一:把元素的相反数丢进堆中 法二 priority_queue<int,vector<int>,greater<int> >q; 二、重载运算符 有时候我们的优先队列中的元素可能是结构体类型的。这时候我们可能需要重载一下运算符。 比 ...
分类:
其他好文 时间:
2018-10-01 11:57:22
阅读次数:
112
题面 sol:(思想):开一个大根堆和一个小根堆,每次计算到下了一个加油站用掉的油时尽量用小根堆中的元素,且同时删去大根堆中的相应位置的元素,当前加油站如果足够便宜,就可以把大根堆中的元素替换掉; (实现):显然不可以开两个堆,因为删除是瓶颈,就可以用一下双端队列,右小左大,用油是从右边弹出,更新时 ...
分类:
其他好文 时间:
2018-09-23 18:17:00
阅读次数:
174
今天学长对比了最小生成树最快速的求法不管是稠密图还是稀疏图,prim+邻接表+堆优化都能得到一个很不错的速度,所以参考学长的代码打出了下列代码,make_pair还不是很会,大体理解的意思是可以同时绑定两种元素(和struct差不多)但加入堆的时候以第一个元素来进行优先队列,建立的是大根堆由于每次要 ...
分类:
其他好文 时间:
2018-09-19 20:01:49
阅读次数:
189