1 条题解

  • 1
    @ 2023-5-16 18:33:53

    注意到这个编码其实就是哈夫曼编码,考虑构造哈夫曼树。

    每次就是把 k\le k 个并在一起,直到最后只剩下一项。

    第一次把 (n1)mod(k1)+1(n-1)\bmod(k-1)+1 个并在一起(如果 k1n1k-1\nmid n-1),之后每次并 kk 个,这样显然最优。

    拿一个小根堆维护一下,每次取出前 kk 个合一起,即可 O(nlogn)O(n\log n) 求出最小解。

    考虑如何最小化最长串。

    考虑在状态中同时记录合并次数,如果有相同的大小优先取合并次数少的。可以证明这样最优。

    总复杂度 O(nlogn)O(n\log n)

    参考代码

    • 1

    信息

    ID
    4198
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    12
    已通过
    11
    上传者