k 叉 Huffman 树问题
k叉Huffman树问题?
描述:给 n 个节点和函数 w(i), 要求给这 n 个节点赋一个树结构, 可以新建节点, 使得这原来的 n 个节点都是新树的叶节点, 每个叶节点 i 的贡献是这个节点的深度乘以 w(i),要求总贡献最小, 求出这个最小值和树的结构。k叉是指一个节点最多有 k 个儿子。
解法:显然要让 w 值较小的深度更大, 所以每次贪心合并最小的 k 个节点, 值和结构就清晰可见了。有一个问题就是这样可能会使根节点的儿子不满 k 个,这样显然是不优的, 所以要增加几个无穷小点, 让儿子不满的情况出现在最深层。具体要怎么样呢?每次合并要减少 k 个点, 增加 1 个点, 相当于减少 k 个点,在没有儿子不满的情况下,点的数量 n 应满足 (k−1)∣(n−1) , 具体要增加的点数就清晰可见了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 为DeepSeek添加本地知识库
· .NET程序员AI开发基座:Microsoft.Extensions.AI
· 精选4款基于.NET开源、功能强大的通讯调试工具
· 数据不出内网:基于Ollama+OneAPI构建企业专属DeepSeek智能中台
· 大模型工具KTransformer的安装