植物大战僵尸
费用提前计算,一个很重要的思想就是考虑如何分摊费用到每个单元上,然后直接计算每个单元对全局费用的贡献
这道题目可以知道,比较特殊的是蓝草和绿草(所以下面就先考虑这两种草而忽略红草)
对于蓝草,我们种在某一格,他对全局造成的影响是什么?他既会使前面(定义为从入口那端开始数)的绿草的中毒的伤害增加也会使后面的绿草的中毒的伤害增加,我们要考虑怎么一次性计算这个影响
对于绿草,我们种在某一格,他对全局造成的影响是什么?他的中毒时间既会因为前面的,也会因为后面的蓝草而增加
我们可以分别给两个草分配一下,由于DP是从前面往后面DP,所以我们认为蓝草的影响考虑前面的绿草,绿草的影响考虑前面的蓝草(这样上面说的前面和后面的问题就直接解决了,因为上文说的前面后面的问题,比如绿草考虑后面的蓝草就相当于蓝草考虑前面的绿草,这样就能解决了)
于是有
红草怎么办?
当然如果我们没有想到这个贪心,我们直接设
这道题目是POJ3042,可以尝试一下
update 2024.6.30
其实这道题目根本不是费用提前计算,费用提前计算是要考虑全局的影响的(i.e.,不能只考虑当前状态的费用,还要考虑除了当前状态之外产生的费用)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构