左偏树
HT008_123
家人们点点关注叭
展开
-
可合并堆-左偏树 初级入门教程
引言对于维护一串数的最大值,最小值,插入,查询,删除优先值。 我们仅需要使用二叉堆也就是STL中的优先队列即可维护! 但如果有多个堆并且需要我们对堆进行合并,该怎么办? 于是引入可合并堆。 可合并堆有四种,这里介绍左偏树。 支持合并,查询,插入,删除优先值操作。性质1:根节点大于(小于)任何一个子节点(堆的性质) 2:节点的左儿子的距离不小于右儿子的距离。 3:根节点原创 2018-01-07 14:05:07 · 1275 阅读 · 0 评论 -
[JLOI2015] 城池攻占
题目描述:雾.题目分析:改变操作乘法是没有负数的,那么就不会改变大小关系,我们就可以DFS树,然后用可合并堆进行操作。 Splay+启发式合并也可以过题目链接:Luogu 3261 BZOJ 4003Ac 代码:#include <iostream>#include <cstdio>#include <algorithm...原创 2018-03-30 08:41:56 · 251 阅读 · 0 评论 -
[APIO2012] 派遣
题目描述:在树中找到一个点i,并且找到这个点子树中的一些点组成一个集合,使得集合中的所有点的c之和不超过M,且Li*集合中元素个数和最大。题目分析:首先贪心的想一下。 我们把i的子树及自己的元素全部排一下序,然后累加,去找最多的元素,sumc<=m 那么答案即为 Li*元素个数 那我们就可以枚举所有的点,每次都做一下这个过程,取max 如何快速从子树中得到信息呢? ...原创 2018-03-30 08:42:10 · 327 阅读 · 0 评论 -
[Luogu 1456] Monkey King
题目描述:雾。题目分析:左偏树裸题,注意朋友的朋友也是朋友,用并查集来维护关系题目链接:Luogu 1456Ac 代码:#include <iostream>#include <cstdio>#include <cstring>const int maxm=110000;struct left_tree{ ...原创 2018-03-30 08:42:49 · 121 阅读 · 0 评论 -
[Luogu P2713] 罗马游戏
题目描述:雾。题目分析:这个SB博主又在水题了。。。 左偏树维护一个小根堆题目链接:Luogu 2713Ac 代码:#include <cstdio>#include <algorithm>#include <iostream>#include <cstring>const int maxm=110000...原创 2018-04-13 09:39:12 · 165 阅读 · 0 评论