k叉赫夫曼树:每次合并k个权值最小的节点,用优先队列存,直到只剩下不到k个节点
首先判满,计算多余节点个数,是(N-1)mod(k-1)。然后有两种方法补满,
①:把(多余的+1)个合并成1个
②:缺少的用0来补充
有人说用优先队列太慢,会被卡log方,于是可以考虑用数组存储被合并的点,被合并的点的权值不用排列就是升序,可以省一个log。
有HDU5884,代码一会儿再贴。
k叉赫夫曼树:每次合并k个权值最小的节点,用优先队列存,直到只剩下不到k个节点
首先判满,计算多余节点个数,是(N-1)mod(k-1)。然后有两种方法补满,
①:把(多余的+1)个合并成1个
②:缺少的用0来补充
有人说用优先队列太慢,会被卡log方,于是可以考虑用数组存储被合并的点,被合并的点的权值不用排列就是升序,可以省一个log。
有HDU5884,代码一会儿再贴。