1 条题解

  • 0
    @ 2025-10-19 16:56:38

    解题思路

    关键观察 颜色平衡约束:每种颜色数量相同,设每种颜色买了 tt 个,则总糖豆数为 k×tk \times t 模运算:我们需要在模 mm 意义下计算重量 分组处理:按颜色分组,每组内可以选择多个同颜色的糖豆

    动态规划设计 我们使用三维DP: dp[i][j] 表示处理前 ii 种颜色,总重量模 mmjj 的最小花费 但还需要记录每种颜色的数量信息

    更好的方法是: 先对每种颜色单独做背包 然后合并所有颜色的结果

    算法步骤

    预处理每种颜色:

    对于颜色 cc,计算 f_c[r] 表示选择 tt 个该颜色糖豆,总重量模 mmrr 的最小花费 这可以通过分组背包实现

    合并所有颜色: 初始状态:dp[0][0] = 0,其他为无穷大 对于每种颜色 cc,用 f_c 更新 DP dp_new[(j + r) % m] = min(dp_new[(j + r) % m], dp_old[j] + f_c[r]) 处理不同数量:

    我们需要考虑每种颜色购买 t=0,1,2,t = 0, 1, 2, \ldots 个的情况,但 tt 不能太大,因为总糖豆数 k×tnk \times t \leq n

    复杂度优化

    直接枚举 tt 会超时,需要优化 使用模意义下的最短路优化背包 对于每种颜色,用 Dijkstra 或 BFS 求模 mm 意义下的最小花费

    • 1

    信息

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