Alice 想要向 Bob 发送一条重要的信息。信息 是一个正整数(字符)序列。
为了压缩消息,Alice 想要使用二叉 Huffman 编码。我们回顾一下,二叉 Huffman 编码或二叉前缀码是一个函数 ,它将消息中出现的每个字符映射为某个二进制字符串(即只包含字符 '0' 和 '1' 的字符串),对于任意两个不同的字符 和 ,都有 不是 的前缀(反之亦然)。消息 的编码结果是每个字符编码的拼接,即字符串 。Huffman 编码非常有用,因为如果已知函数 ,压缩后的消息可以简单且唯一地解码。通常选择编码方式以最小化压缩消息的总长度,即字符串 的长度。
由于安全原因,Alice 不想发送完整消息。她会选择消息的若干子串,分别发送。对于每个给定的子串 ,她想知道使用 Huffman 编码后最小可能的编码长度。请你帮她解决这个问题。