1 条题解

  • 0
    @ 2026-8-28 1:30:58

    题解

    思路

    设原数组的 MEX 为 MM。大于等于 MM 的元素不会影响后续 MEX,可以留到 MEX 变成零后再删除。

    考虑当前 MEX 为 ii,并希望下一次让它降到 j<ij<i。必须删除值为 jj 的全部元素。前 cj−1c_j-1 次删除后 jj 仍存在,每次代价都是 ii;最后一次删除后 MEX 变成 jj,本次代价为 jj。因此这次变化的代价为

    i(cj−1)+j.i(c_j-1)+j.

    这把问题化成一个只向更小编号转移的最短路动态规划。

    做法

    统计每个小于 MM 的值的出现次数。令状态值表示当前 MEX 已经降到某个数时的最小累计代价,初始只有 MM 的状态为零。

    按 MEX 从大到小枚举。对每个当前值 ii,枚举所有 j<ij<i,用 i(cj−1)+ji(c_j-1)+j 更新状态 jj。最后状态零就是答案。

    任何删除序列中,MEX 只会在某个尚存在的较小值被删光时下降,因此可以唯一分解成这些转移;每个转移的代价由上式精确给出。反过来,按任意一条状态转移链依次删光指定值,都能实现对应代价,所以动态规划与原问题等价。

    复杂度

    M≤nM\le n。每个测试用例的时间复杂度为 O(M2)O(M^2),空间复杂度为 O(M)O(M)。

    • 1

    信息

    ID
    1110
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者