Heap是一种数据结构具有以下的特点: 1)完全二叉树; 2)heap中存储的值是偏序; Min-heap: 父节点的值小于或等于子节点的值; Max-heap: 父节点的值大于或等于子节点的值; 堆的存储: 一般都用数组来表示堆,i结点的父结点下标就为(i–1)/2。它的左右子结点下标分别为2 * ...
分类:
其他好文 时间:
2018-01-15 16:29:26
阅读次数:
209
这东西。。。好简单的诶 不过貌似一年前的时候,还没有写博客的习惯 那就来总结一下呗 首先来说大根堆 把大根堆当成一个完全二叉树(这个说法其实不准确) 对于a[i],左儿子为a[i*2]右儿子为a[i*2+1] 也就是说我们已经有一颗树了 然后我们从后往前fix每个节点 fix(x)就是将x放到他该在 ...
分类:
编程语言 时间:
2017-12-25 01:01:35
阅读次数:
144
左偏树。 每个子节点维护大根堆,遍历一个儿子就往自己合并,合并发现钱不够了就删除队顶。 //Achen #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #inclu ...
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ2809 题意概括 n个点组成一棵树,每个点都有一个领导力和费用,可以让一个点当领导,然后在这个点的子树中选择一些费用之和不超过m的点,得到领导的领导力乘选择的点的个数(领导可不被选择)的利润。求利润最 ...
题目大意:给你n个数,要求输出其中前1,3,……,2k-1个数的中位数题解:第一个中位数是第一个数,每次读两个数,若一小一个大,那么不变;若大大,中位数变成比他小的最大数;反之,中位数变成比他大的最小数。然后可以用一个大根堆和一个小根堆维护(代码中small为比现中位数小的数,即大根堆;big为比现 ...
分类:
其他好文 时间:
2017-12-10 21:39:05
阅读次数:
144
【BZOJ4919】[Lydsy六月月赛]大根堆 Description 给定一棵n个节点的有根树,编号依次为1到n,其中1号点为根节点。每个点有一个权值v_i。 你需要将这棵树转化成一个大根堆。确切地说,你需要选择尽可能多的节点,满足大根堆的性质:对于任意两个点i,j,如果i在树上是j的祖先,那么 ...
分类:
其他好文 时间:
2017-12-09 14:58:56
阅读次数:
149
http://www.lydsy.com/JudgeOnline/problem.php?id=1029 把任务按截止时间从小到大排序 如果当前时间+当前任务耗时<=当前任务截止时间,把这个任务耗时放到大根堆里,ans++ 否则 如果堆顶>当前任务耗时,删除堆顶,把这个任务耗时放到大根堆里 1029 ...
分类:
Web程序 时间:
2017-11-26 12:35:12
阅读次数:
203
Treap=Tree+Heap 起名的人非常有才 Treap是啥? 一棵二叉搜索树可能退化成链,那样各种操作的效率都比较低 于是可爱的Treap在每个节点原先值v的基础上加了一个随机数rnd,树的形态要满足是rnd的大根堆或小根堆 可以说是普通BST的进化版吧。 Q:为什么rnd要满足是大根堆或小根 ...
分类:
其他好文 时间:
2017-11-25 22:33:36
阅读次数:
181
这道题是一道splay裸题,然而身为蒟蒻的我并不会,所以这道题我维护的是一个大根堆与一个小根堆结合起来的类似沙漏的结构。 本题难点在于询问的不是最大最小值,而是第K小值,所以我们想到了维护这样两个堆,上面是一个大小限定为K 1的大根堆,下面是一个小根堆,每次插入/查询操作时,保持前K 1大的始终在大 ...
分类:
其他好文 时间:
2017-11-20 23:19:19
阅读次数:
211
堆: ①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值; ·堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。 ②堆是在程序运行时,而不是在程序编译时,申请某个大 ...
分类:
编程语言 时间:
2017-11-16 20:52:13
阅读次数:
249