题解 P2858 【[USACO06FEB]奶牛零食Treats for the Cows】
由题意可知每次只能取两端的零食。这就可以看出来这是一道区间DP题。
我设计出了一个状态 :
-
表示 这个区间最多能得到的钱。-
当时我就自以为是的推出了转移方程:
-
-
这个非常好理解(事先说一句这是错的),
这个区间的最大值可以由 这个区间的最大值或 这个区间转移而来。 但是这个方程有一个明显的问题:拿该题的样例来说, 是由 这个顺序得到的。而按照上面的转移方程的话,它只能由 和 转移而来,且这个转移默认了新加上去的那个数是最后一个。而 的最大值是由 这个顺序得来的,用我这个方程转移的话 的顺序为 , 的最大值是由 这个顺序的来的,而用了我这个方程转移后 的顺序为 。都没法的出正确的答案,而且可以看到由 转移后的到的那个顺序还是错的!这一切的错误都得归咎与且这个转移默认了新加上去的那个数是最后一个。这个性质。我们可以发现无论是 还是 再转移后的顺序中都显然应该是第一个。 -
那我们将转移方程修改成默认新加上去的这个数是第一个不就行了吗?
-
通过上面一番推导的出的思路,我们继续设计转移方程:
-
既然新加上去的数默认是第一个,转移时原来的区间的值得被修改。我们继续那上面那个例子原来
的顺序是 , 值则是由 这样得出的。而转移成 后,因为默认新加上去的数是第一个。所以 的顺序是 。而此时 的值则是由 的出的。很明显原来的 和现在 的算式是有关联的。我们用求 的值的算式减去求 的值的算式可得
很明显这个
我们可以通过前缀和预处理得到。那么我们就得到了新的转移方程:
这样一来就可以愉快地
了 代码 记忆化搜索实现 -
码字挺累的,望过审。
__EOF__

本文作者:Kdlyh
本文链接:https://www.cnblogs.com/kdlyh/p/17776982.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/kdlyh/p/17776982.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下