AtCoder Beginner Contest 345 E - Colorful Subsequence 题解
题意
有 个球,每一个球有一个颜色 和价值 ,现在要删除其中的 个球,使得剩下的球没有相邻的两个球颜色相等。求剩下的球的最大价值总和。
数据范围
思路
考虑 dp。
设计状态 代表不删除第 个球,在前面删除 个球时最大的价值总和。
则 一定由前面的第 个球删除 之间的全部 个球转移而来,状态转移方程为 。
这样转移是 的,实测会超时,考虑优化。
优化
发现转移过来的状态里,第一维和第二维的差总是相等,于是我们可以维护一个 , 的转移就可以优化到 。
当时把我卡住的难点在于如何保证当前最优解 的颜色与当前的 不同。
方法则是维护两个颜色不同的最优解和次优解,这样如果当前的 与最优解的颜色相同,就可以从次优解转移过来。
细节详见代码。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Misaka's Blog!
评论
re