返回顶部

CF853C_Boredom

作者:@魔幻世界魔幻人生
本文为作者原创,转载请注明出处:https://www.cnblogs.com/subtlemaple/p/16424878.html


题意:

给定一个有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 @   魔幻世界魔幻人生  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示