贪心.
$k$ 叉 $Huffman$ 树编码问题,可以等价为每次最多合并 $k$ 个果子的合并果子问题.
这是因为两者的合并树是相同的.
于是就像合并果子那样贪心,维护一个小根堆,每次取出前 $k$ 小的元素合并,需要先补 $0$ ,使得每次都恰好合并 $k$ 个.
这道题还需要让最大的长度最小,所以在权值相同时,按照深度从小到大排序,优先合并深度小的.
时间复杂度 $O(n\log n)$ .
1 | //%std |
夢はここに 思い出は遠くに
贪心.
$k$ 叉 $Huffman$ 树编码问题,可以等价为每次最多合并 $k$ 个果子的合并果子问题.
这是因为两者的合并树是相同的.
于是就像合并果子那样贪心,维护一个小根堆,每次取出前 $k$ 小的元素合并,需要先补 $0$ ,使得每次都恰好合并 $k$ 个.
这道题还需要让最大的长度最小,所以在权值相同时,按照深度从小到大排序,优先合并深度小的.
时间复杂度 $O(n\log n)$ .
1 | //%std |