1 条题解
-
0
解题思路
关键观察 颜色平衡约束:每种颜色数量相同,设每种颜色买了 个,则总糖豆数为 模运算:我们需要在模 意义下计算重量 分组处理:按颜色分组,每组内可以选择多个同颜色的糖豆
动态规划设计 我们使用三维DP: dp[i][j] 表示处理前 种颜色,总重量模 为 的最小花费 但还需要记录每种颜色的数量信息
更好的方法是: 先对每种颜色单独做背包 然后合并所有颜色的结果
算法步骤
预处理每种颜色:
对于颜色 ,计算 f_c[r] 表示选择 个该颜色糖豆,总重量模 为 的最小花费 这可以通过分组背包实现
合并所有颜色: 初始状态:dp[0][0] = 0,其他为无穷大 对于每种颜色 ,用 f_c 更新 DP dp_new[(j + r) % m] = min(dp_new[(j + r) % m], dp_old[j] + f_c[r]) 处理不同数量:
我们需要考虑每种颜色购买 个的情况,但 不能太大,因为总糖豆数
复杂度优化
直接枚举 会超时,需要优化 使用模意义下的最短路优化背包 对于每种颜色,用 Dijkstra 或 BFS 求模 意义下的最小花费
- 1
信息
- ID
- 3395
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者