返回顶部

CF853C_Boredom

题意:

给定一个有n个元素的序列a。你可以做若干次操作。在一次操作中我们可以取出一个数(假设他为x)并删除它,同时删除所有的序列中值为x+1和x-1的数。这一步操作会给玩家加上x分。

 

分析:

设dp[i] [0/1] 代表取到 i 这个值时的最大分值,设cnt[i] 代表i出现总次数, 则有两种情况:

  • dp[i] [0] = max (dp[i-1] [0/1])

  • dp[i] [1] = dp[i-1] [0] + cnti[i] * i = max(dp[i-2] [0/1]) + cnt[i] * i

推就好了

注意 i=1 时影响不到除了2外的数,所以dp[1]初始化为cnt[1]*1

并且我们会发现,i-1很可能不存在,所以直接将i-1之前的最佳状态转移给 i-1就可以了

 
posted @ 2022-06-29 20:45  魔幻世界魔幻人生  阅读(47)  评论(0)    收藏  举报