二叉堆
Deep_Kevin
我太弱了
展开
-
黑匣子_NOI导刊2010提高(06),洛谷之提高历练地,堆
正题 这题在维护第i大的值上运用了巧妙的方法。 第一题:黑匣子_NOI导刊2010提高(06) 我们用一个大根堆和一个小根堆来分别维护前i小的和剩余的,那么答案很明显,就是当前拥有前i小元素的大根堆的堆顶。我们每次把新的元素加入小跟堆,然后让大根堆和小根堆互换相斥元素。(就是小的往大根堆跑,大的往小跟堆跑)代码<注意操作>#include<cstdi...原创 2018-04-16 10:48:07 · 153 阅读 · 0 评论 -
[HNOI2003]操作系统,洛谷之提高历练地,堆
正题 第二题:[HNOI2003]操作系统 我们看到了“优先级最高”这几个字,我们就想到了用堆来维护bool operator<(const node y)const{ if(rank==y.rank) return begin>y.begin; return rank<y.rank; } 我们这样就可以来维护优先级高的在前面先做,优先级一样高的先做到达时...原创 2018-04-16 10:55:04 · 228 阅读 · 0 评论 -
序列合并,洛谷之提高历练地,堆
正文 第三题:序列合并 我们很容易就可以得到一个结论,将A,B从小到大排序后,可以满足A1+B1<=A1+B2<=A1+B3... 我们也可以满足A1+B1<=A2+B1<=A3+B1... 那么我们选出一个最小的,那么第二小的只可能存在于Ai+1 + Bj 或者 Ai + Bj+1;%%% 所以我们排一次序后,把A...原创 2018-04-16 11:18:09 · 239 阅读 · 0 评论 -
最小函数值,洛谷之提高历练地,堆
正题 第四题:最小函数值 我们还是仿照第三题的做法,我们先维护一个大根堆,使大根堆里面有m个元素,然后每次加入新的x,看一下是否小于堆顶,如果可以,那就更换堆顶,这样我们就可以保证是最小的m个,那么当没有元素可以加到堆内,就是我们的结束。#include<cstdio> #include<cstdlib> #include<cstring> ...原创 2018-04-16 11:28:04 · 196 阅读 · 0 评论 -
种树,洛谷之提高历练地,堆
正题 第五题:种树 这题看上去很烦,实际上也很烦。。。 那么我们第一个想到的就是用堆维护最大值。 我们把多步拆成多个一步来求解,当k=1的时候,那么答案就是最大值。 当k=2时,要么就是多选一个不相邻的,要么就是同时选相邻的,为什么旁边两个要么同时选要么同时不选呢?可能存在选其中一个再选与其不相邻的一个吗?很明显是不可能的,因为当前选出来的已经是最...原创 2018-04-16 11:42:57 · 163 阅读 · 0 评论