多叉堆,和 另外一个 是好兄弟,在某些 dijkstra 中用于阳间地平衡复杂度。
本质上是控制堆的高度,用一个 \(V^{\frac 1 k}\) 叉树来维护堆,当元素的值减小时只需要 \(O(k)\),弹出最小值也只需要 \(O(k + V^{\frac{1}{k}})\),当 \(k\) 取 \(\ge 2\) 的常数(根据题目来)就可以用于平衡复杂度了。
但是我不是很会写这个,放个
code from Glacia_official
code from ppip(fibonacci)