左偏树 模板
来源:互联网 发布:少女前线枪娘数据 编辑:程序博客网 时间:2024/06/06 00:27
最近因为写一道贪心的题目,需要用到左偏树,而我早就忘记怎么写了。。。。于是就再去看了一遍。
其实左偏树的思想并不难。其本质是一个堆,然后每次合并入右子树,而保持左子树距离最长,也就是说向看起来小的子树中合并,从而使堆一定程度上平衡。他可以做到在 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;}
- 左偏树 模板
- 左偏树模板
- 左偏树模板
- 【模板】左偏树
- 左偏树模板
- 左偏树 模板
- ACM 左偏树(模板)
- HDU3031及左偏树模板
- 左偏树,原理及模板
- 回味左偏树(模板)
- 「模板」 左偏树
- 带模板的左偏树
- 模板
- 模板?
- 模板
- 模板
- 模板
- 模板
- 计算字符串相似度算法——Levenshtein
- PHP的三种典型开发环境
- 好委屈,调试通过后,哭了
- java中hashcode()和equals()的详解
- java.net.UnknownHostException 异常处理
- 左偏树 模板
- [noi2009]植物大战僵尸
- (百例编程)83.卡布列克常数
- uboot-2009.03成功移植到mini2440
- 第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
- Lisp.使用递归(Using Recursion)
- 求两个数的整除余数
- Linux环境下的JAVA开发环境部署
- shell export 作用