摘要: 题目链接 思路 首先肯定要树形dp,一直没想到怎么用左偏树。如果不断弹出又不断地合并复杂度不就太高了。瞄了眼题解才知道可以直接用大根树。然后记录出当前这棵左偏树的大小(树里面所有点的薪水之和)以及点的个数。然后不断的删点。直到薪水满足条件为止。 代码 cpp include include incl 阅读全文
posted @ 2018-11-27 21:52 wxyww 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 题目链接 思路 左偏树的模板题,参考左偏树学习笔记 对于这道题我是用一个并查集维护出了哪些点是在同一棵树上,也可以直接log的往上跳寻找根节点 代码 cpp include include include include include include using namespace std; ty 阅读全文
posted @ 2018-11-27 19:53 wxyww 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 主要应用 首先要知道左偏树是用来干什么的。如果给我们两个优先序列,然后让我把这两个优先队列合并成一个优先队列。如果直接用堆,就是将一个队列里面的数不断弹出然后扔到另一个队列里。复杂度是$O(n)$n为队列中数的个数。但是用左偏树就可以做到$log(n_1 + n_2)$。 PS:为了便于讨论,本文所 阅读全文
posted @ 2018-11-27 19:40 wxyww 阅读(257) 评论(0) 推荐(0) 编辑