
左偏树/可并堆
wwyx2001
OIer----这条路,仅一人独行
展开
-
[BZOJ1367][Baltic2004]sequence(可并堆+中位数)
题目: 我是超链接 题解: 这道题让我想起了曲神的胡策,把一堆数字变成一样的数字要的最小代价是什么呢?就是全都变成中位数啦 那这个题目是什么意思呢?把一堆数字变成递增的需要的最小代价 先考虑z1<=z2<=z3<=...<=znz1<=z2<=z3<=...<=znz_1w[i](w[1]<=w[2]<=...<=w[...原创 2018-04-12 17:49:44 · 205 阅读 · 0 评论 -
[BZOJ3011][Usaco2012 Dec]Running Away From the Barn(可并堆)
题目: 我是超链接 题解: 自底向上维护左偏树(大根堆),每个点的权值是到根的距离 每次对于一个点x,把所有子节点merge到一起就代表这棵子树 如果堆顶的权值差>L就pop,动态地维护size 代码: #include <cstdio> #include <iostream> #define LL long long using namespace...原创 2018-04-12 16:22:51 · 203 阅读 · 0 评论 -
[HDU1512]Monkey King(可并堆)
题目: 我是超链接 题解: 可并堆的裸题,这次的操作是合并,删除,插入,插入的话就是把一个点merge到一个堆里,别的都是基本操作了 代码: #include <cstdio> #include <cstring> #include <iostream> using namespace std; const int N=100005; int f[...原创 2018-04-12 14:38:03 · 248 阅读 · 0 评论 -
[BZOJ1455]罗马游戏(可并堆)
题目: 我是超链接 题解: 最近刚刚合并了一堆东西现在学这玩意不虚 这题目描述好血腥啊 其实可并堆就是把堆合并起来,通过并查集维护目前的根节点 合并两个堆的操作就是:根节点放最小的元素,要满足左偏的性质,合并的时候把B和A的右子树合并 弹出最小点并删除的操作:首先最小点就是“代表元素”的权值(目前的根节点),删除的话就是合并现在的左子树右子树,不要现在的根节点而是给他们找一个新爸...原创 2018-04-11 21:34:23 · 189 阅读 · 0 评论