1 条题解

  • 0
    @ 2026-9-3 11:18:23

    题解

    思路

    一个乘积的末尾零数等于其质因子 22 和 55 的总指数较小者。记第 ii 个数的两个指数为 pi,qip_i,q_i,问题变为选择 kk 对,使 min⁡(∑pi,∑qi)\min(\sum p_i,\sum q_i) 最大。

    做法

    设 dp[j][s]dp[j][s] 为选了 jj 个数、因子 55 总数为 ss 时,因子 22 总数的最大值。逐个数倒序更新。答案为 max⁡smin⁡(s,dp[k][s])\max_s\min(s,dp[k][s])。由于 ai≤1018a_i\le10^{18},每个数的因子 55 不超过 2525,总状态范围至多 50005000。

    小规模枚举全部子集。若所有数都是 1010 的幂,每个数的两个指数相等,直接选择指数最大的 kk 个。独立 Oracle 使用复制上一层的滚动表转移,与标程的原地倒序更新互证。

    正确性证明

    状态精确记录选择数量和因子 55 总数,并在相同状态下保留最大的因子 22 总数;较小值不可能在任何后续选择中反超,因此可安全舍弃。每个数的选与不选均被转移覆盖,归纳后 dp[k]dp[k] 包含所有合法选择的最优代表。枚举 ss 取两类指数较小者的最大值即为答案。

    复杂度

    时间复杂度 O(nkS)O(nkS),空间复杂度 O(kS)O(kS),其中 S≤5000S\le5000。

    • 1

    信息

    ID
    1493
    时间
    2000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者