CF1866D Digital Wallet 题解

Problem - 1866D - Codeforces

Digital Wallet - 洛谷

  • 不妨为选数钦定一个顺序:不同行之间无影响,列从左到右取一定不劣。

    • 设计状态:设 \(dp_{i,j}\) 表示进行了 \(i\) 次操作,第 \(i\) 次到了 \(j\) 列最大

    • 转移:因为对于同一列不互相影响, 因此枚举这一列取 \(c\) 个数,显然取这一列数的前 \(c\) 大。

    • \(dp_{i,j} \leftarrow \min dp_{i-c,j-1}+sum_{j,c}\)

    • 优化:发现 \(k \leq 10\) ,因此给 dp 状态的第二项加上一个偏移量

  • 最终复杂度 \(O(nmk)\)

posted @ 2023-11-04 08:25  FOX_konata  阅读(27)  评论(0编辑  收藏  举报