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