这个可以根据你的动归的状态划分阶段,所谓的阶段就是每个状态它由哪些状态转移过来时
,这两者的差别,通过状态推导转移再划分阶段,这大概就是基本的动归思想吧,
滚动数组其实就是为了优化动归的空间的,
有些状态的解虽然由前面转移过来但是我们没有必要将其保存起来,
因为我们只需要最终的答案,这样就可以优化,
降低DP的空间复杂度,因为动归就是个用空间换时间的典型嘛,
但是空间也是有限的。实际一点就是我们每次的状态其实只需要前面的一个(或者几个)状态转移过来,
所以我们就只保存我们想要的那个状态,因为动归的无后向性,
我们可以在转移后就覆盖掉前面的状态的结果,因为当前点后面的状态与当前之前的状态再无关系
,我们何必保存它呢?
DP的见解
最新推荐文章于 2023-08-02 08:03:40 发布