送披萨

非常好的一道题目,感觉这种类型的题目都被玩出花来了。。。

主要是这个可以选择送或者不送非常搞人心态,虽然从实际情况上来看就是路过一个客户时,如果是正利润那么一定要送,如果是负利润那么一定不送,但是为了DP的方便,我们可以选择即使是正利润也可以不送,负利润也可以送,只要最后覆盖了最优答案即可

注意好好把这个状态读几遍,这个cnt表示的是一定要送的客户数(而且这些客户都是在区间[i,j]之外的),最大收益不包含区间[i,j]的收益

看这个代码,从DP方程来说,好像区间越来越大了,但是最终的返回条件是cnt==0,所以是以cnt为阶段的;中途枚举k就是在做送或者不送的选择;由于我们可以选择即使是正利润也可以不送,负利润也可以送(枚举k),而且我们的最大收益(数组值)不包含区间[i,j]的收益,所以我们可以直接作出提前计算(负的可以继续减)

这道题目算的也是最大收益而不是最小损失,所以费用提前计算当然可以转换为贡献提前计算

update 2024.6.30

这里就想每一次决策的时候,分摊的费用是多少,由于每个人每秒钟减少的收益是相同的而且可以选择送或者不送,所以我们一定要添加一维表示还要处理多少人来计算费用

update 2024.9.11

只是多提醒一下,区间DP虽然一般用迭代来实现,但是记忆化搜索也可以实现区间DP,所以以后迭代不好实现的时候一定要想到记忆化搜索

posted @   最爱丁珰  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示