左偏树
Master.Yi
学习他人,提升自己;
提升自己,帮助他人。
展开
-
k短路的可持久化可并堆做法
例题:洛谷P2483 【模板】k短路 / [SDOI2010]魔法猪学院 俞鼎力神仙的PPT 传统的 A∗A^*A∗ 算法在图为一个 nnn 元环的时候每次找一条路都要转整整一圈,复杂度会达到 O(nk)O(nk)O(nk) 而可持久化可并堆的做法在找路径的时候与 nnn 无关,找到一条路的复杂度是 O(logk)O(\log k)O(logk) 定义 在一张有向带权图 GGG 中,从起点 sss 到终点 ttt 的不严格递增的第 kkk 短路的长度。两条路径不同定义为按顺序经过的边集不同。 一些性质 记原创 2020-07-14 19:09:03 · 929 阅读 · 2 评论 -
左偏树模板
这是洛谷P3377 【模板】左偏树的代码。 找所在堆的根的时候用并查集的路径压缩,但注意删除根节点时要将根节点的父亲指向新的根节点,因为堆中有些点的父亲可能仍指向原根节点。若要继续使用原根节点最好复制一个新节点。 Code: #include<bits/stdc++.h> #define maxn 100005 using namespace std; int n,m,lc[maxn]...原创 2019-11-13 15:03:57 · 180 阅读 · 0 评论 -
洛谷P1456 Monkey King 【左偏树】
第一道左偏树。 贴个模板纪念一下(因为没看到多组数据WA了一发。。 ) Code: #include<cstdio> #include<cctype> #include<algorithm> #define maxn 100005 using namespace std; inline void read(int &a){ char c;while(...原创 2019-03-27 19:15:11 · 233 阅读 · 0 评论 -
BZOJ 2809: [Apio2012]dispatching 【左偏树】
题目描述: 忍者的上下级关系构成一棵树,每个忍者有两个值:薪水和领导力。 给一个预算m,要你选择一个忍者作为管理者,并雇佣他的子树(包括自己)中的一些忍者,在这些忍者的薪水之和<=m的前提下,让雇佣的忍者数乘以管理者的领导力最大。 题目分析: 枚举每一个忍者作为管理者,看子树中最多能选几个忍者。 显然需要合并儿子的信息。 我一开始想的用权值线段树合并,查询的时候就在线段树上二分。 然后看题解...原创 2019-03-27 20:04:47 · 161 阅读 · 0 评论 -
洛谷P3261 [JLOI2015]城池攻占 【左偏树】
题目传送门 对每个城池维护一个小根堆,如果堆顶元素小于防御值就弹出,还在堆中的元素就在堆顶打上这座城池的贡献标记,合并以及pop的时候下传懒标记。父亲合并儿子的堆即可。 注意long long。 Code: #include<cstdio> #include<cctype> #include<algorithm> #define maxn 300005 #def...原创 2019-03-28 08:08:51 · 177 阅读 · 0 评论