2714. 左偏树
题目链接
2714. 左偏树
你需要维护一个小根堆的集合,初始时集合是空的。
该集合需要支持如下四种操作:
1 a
,在集合中插入一个新堆,堆中只包含一个数 。2 x y
,将第 个插入的数和第 个插入的数所在的小根堆合并。数据保证两个数均未被删除。若两数已在同一堆中,则忽略此操作。3 x
,输出第 个插入的数所在小根堆的最小值。数据保证该数未被删除。4 x
,删除第 个插入的数所在小根堆的最小值(若最小值不唯一,则优先删除先插入的数)。数据保证该数未被删除。
输入格式
第一行包含整数 ,表示总操作数量。
接下来 行,每行包含一个操作命令,形式如题所述。
输出格式
对于每个操作 ,输出一个整数,占一行,表示答案。
数据范围
,
,
当前插入数的个数。
数据保证所有操作合法。
输入样例:
输出样例:
解题思路
左偏树
左偏树作为可并堆的一种数据结构,其重点在于将两个堆合并,在维护堆的性质之外,每个节点 另外维护一个信息 表示 到最近的叶子节点的距离,且要求所有的左子树 和右子树 都有这样的关系:,这样可以保证合并的复杂度为 ,具体证明不再赘述。以小根堆为例,合并 时 即将大的最为小的一棵子树,即递归合并,如果发现有不满足左偏树 性质的情况,交换左右两棵子树即可
本题另外需要用并查集维护集合关系
- 时间复杂度:
代码
__EOF__

本文作者:acwing_zyy
本文链接:https://www.cnblogs.com/zyyun/p/16893113.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/zyyun/p/16893113.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!