植物大战僵尸

费用提前计算,一个很重要的思想就是考虑如何分摊费用到每个单元上,然后直接计算每个单元对全局费用的贡献

这道题目可以知道,比较特殊的是蓝草和绿草(所以下面就先考虑这两种草而忽略红草)

对于蓝草,我们种在某一格,他对全局造成的影响是什么?他既会使前面(定义为从入口那端开始数)的绿草的中毒的伤害增加也会使后面的绿草的中毒的伤害增加,我们要考虑怎么一次性计算这个影响

对于绿草,我们种在某一格,他对全局造成的影响是什么?他的中毒时间既会因为前面的,也会因为后面的蓝草而增加

我们可以分别给两个草分配一下,由于DP是从前面往后面DP,所以我们认为蓝草的影响考虑前面的绿草,绿草的影响考虑前面的蓝草(这样上面说的前面和后面的问题就直接解决了,因为上文说的前面后面的问题,比如绿草考虑后面的蓝草就相当于蓝草考虑前面的绿草,这样就能解决了)

于是有

红草怎么办?

当然如果我们没有想到这个贪心,我们直接设\(f[i][j][k]\)表示前\(i\)个格子,有\(j\)个蓝草和\(k\)个绿草的最大伤害感觉也是可以的

这道题目是POJ3042,可以尝试一下

update 2024.6.30

其实这道题目根本不是费用提前计算,费用提前计算是要考虑全局的影响的(i.e.,不能只考虑当前状态的费用,还要考虑除了当前状态之外产生的费用)

posted @ 2024-01-29 00:12  最爱丁珰  阅读(4)  评论(0编辑  收藏  举报