可并堆
文章平均质量分 75
PoPoQQQ
这个作者很懒,什么都没留下…
展开
-
BZOJ 2809 APIO2012 dispatching Treap+启发式合并 / 可并堆
题目大意:给定一棵树,选定一棵子树中的一些点,薪水和不能超过m,求点的数量*子树根节点的领导能力的最大值 考虑对于每个节点,我们维护一种数据结构,在其中贪心寻找薪金小的雇佣。 每个节点暴力重建一定不行,我们考虑可并数据结构,每个节点将子节点的信息直接合并即可 可以用启发式合并的Treap,也可以用可并堆 今天特意去学了这玩应0.0 先写了左偏树 然后又写了下随机堆…… 后者速度上更快一些原创 2014-10-24 12:05:30 · 1598 阅读 · 0 评论 -
BZOJ 1975 SDOI2010 魔法猪学院 A*k短路
题目大意:给定一个值E 求起点到终点的最多条路径 使长度之和不超过E k短路的A*算法……每个点有一个估价函数=g[x]+h[x] 其中g[x]是从源点出发已经走了的长度 h[x]是从这个点到汇点的最短路 首先先在反图上跑一遍SPFA求出每个点的h[x],然后将源点的g[x]+h[x]加入堆 每次取出堆顶时将堆顶的g[x]向所连接的边扩展 第k次取出汇点即是答案 其中有一个剪枝就是当第k+1原创 2014-11-20 13:15:26 · 2212 阅读 · 0 评论 -
BZOJ 1455 罗马游戏 左偏树
题目大意:给定n个点,每个点有一个权值,提供两种操作: 1.将两个点所在集合合并 2.将一个点所在集合的最小的点删除并输出权值 很裸的可并堆 n 左偏树就是快啊~ #include #include #include #include #define M 1001001 using namespace std; struct abcd{ abcd *ls,*rs; int原创 2014-11-04 21:04:48 · 1549 阅读 · 0 评论 -
BZOJ 3011 Usaco2012 Dec Running Away From the Barn 可并堆
题目大意:给定一棵有根树,求以每个点为根的子树中有多少点到它的距离不超过l 第一眼是可并堆- - 于是怒写- - 管它正解是啥- - 从下到上维护可并大根堆 键值是该点到当前根节点的距离 一旦堆顶剪枝大于l就弹顶 时间复杂度O(nlogn) 什么?你说将整个堆都加上一个值? 打标记不就好了- - 毫无疑问可并堆是可以打标记的- - 此外我的随机堆写if(flag^=1)就T写if(ra原创 2015-02-02 20:11:56 · 1425 阅读 · 0 评论 -
BZOJ 2333 SCOI2011 棘手的操作 可并堆套可并堆
题目大意:给定n个节点,每个节点有一个初始权值,维护以下操作: 1.合并两个联通块 2.某个点权值+x 3.某个点所在联通块权值+x 4.所有点权值+x 5.询问某个点的权值 6.询问某个点所在联通块的最大权值 7.询问所有点之间的最大权值 2333333333333333333333333333333333333333333333333333333333333 2333原创 2015-03-03 15:58:32 · 1957 阅读 · 0 评论