左偏树 模板
2012-11-04 21:00
204 查看
最近因为写一道贪心的题目,需要用到左偏树,而我早就忘记怎么写了。。。。于是就再去看了一遍。
其实左偏树的思想并不难。其本质是一个堆,然后每次合并入右子树,而保持左子树距离最长,也就是说向看起来小的子树中合并,从而使堆一定程度上平衡。他可以做到在 O(logn) 的时间内合并两个堆,十分酷。
关于其应用其实有很多,比如今年 APIO 的 Dispatching (派遣)等。其实如果希望代码量少一点,可以牺牲一下常数,把堆做左偏树来写也可以。
Code :
其实左偏树的思想并不难。其本质是一个堆,然后每次合并入右子树,而保持左子树距离最长,也就是说向看起来小的子树中合并,从而使堆一定程度上平衡。他可以做到在 O(logn) 的时间内合并两个堆,十分酷。
关于其应用其实有很多,比如今年 APIO 的 Dispatching (派遣)等。其实如果希望代码量少一点,可以牺牲一下常数,把堆做左偏树来写也可以。
Code :
node * merge(node * a, node * b) { if (! a) return b; if (! b) return a; if (b->k < a->k) swap(a, b); a->r = merge(a->r, b); if (! a->l || a->r && a->l && a->r->dis > a->l->dis) swap(a->r, a->l); if (a->r) a->dis = a->r->dis + 1; else a->dis = 0; return a; }
相关文章推荐
- ZOJ2334 Monkey King 【左偏树模板题】
- 左偏树模板
- luoguP3377 【模板】左偏树(可并堆)
- 洛谷.3377.[模板]左偏树(可并堆)
- 【洛谷P3377】【模板】左偏树(可并堆)
- HDU 1512 Monkey King(左偏树模板题)
- 模板:左偏树
- 算法模板——左偏树(可并堆)
- 【洛谷】3377【模板】左偏树(可并堆)
- 左偏树(可并堆)详解及有关模板
- COGS 526 又是一道模板题——左偏树
- HDU - 3031 To Be Or Not To Be (左偏树模板)
- 带模板的左偏树
- 左偏树模板及题目推荐
- 左偏树(模板)
- 【模板】左偏树 (模板题:洛谷P3377左偏树/可并堆)
- 斜堆——【模板】左偏树(可并堆)
- 【bzoj1455】【罗马游戏】左偏树+并查集(模板)
- 左偏树(可并堆)模板
- 「模板」 左偏树 - 实现可并优先队列