Link
Solution
可并堆最右链的长度最长为,而左链没有任何限制。
和平衡树相比,左偏树采取了与平衡树完全相反的构造策略。平衡树为了实现所有元素的快速查找,使节点尽量趋于平衡。而左偏树的目的是实现快速的查询最小值与合并操作,恰恰要让节点尽量向左偏。最优的平衡树,恰恰是最差的左偏树,而最优的左偏树,恰恰是平衡树退化的结果。--BYVoid
事实是,左偏树中的任何一条从根到到叶节点的链,上面的点的相对深度关系都永远不会变化,也就是说,这条链只能变长,不会变短。假如一直把一个堆和另一个比它堆顶还大的元素合并,最终就会出来一条链。
所以这道题用左偏树的做法复杂度是有问题的,但出题人没有卡。
做法就按照各种操作的步骤来就行了,只是全局最大值要用一个Treap记录所有堆顶的值,每次找最大。在修改堆的时候相应修改Treap中的元素,就可以了。
Code
1 | //Code by Lucida |