码迷,mamicode.com
首页 > 编程语言 > 详细

算法之DP

时间:2018-10-29 20:39:16      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:提高   暴力   article   sub   onclick   pen   lan   span   lap   

一般DP

都是有模板的,先初始化,然后找到不同状态下数值的关系,使得某个状态可用另一个状态由一个固定的方式转移而来,列出状态转移方程,这就是DP;

例题

P1216 [USACO1.5]数字三角形 Number Triangles

技术分享图片
1 f[i][j]+=max(f[i-1][j-1],f[i-1][j]);
方程

P1044 栈

技术分享图片
1 f[i]+=f[j]*f[i-j-1];
方程

P2800 又上锁妖塔

技术分享图片
1 f[i]=min(f[i-1]+t[i],min(f[i-2]+t[i-1],f[i-3]+t[i-2]));
方程

P1057 传球游戏

可以看出,裸的DP是几乎没有难度的,当然某些题除外如P1004P1280等题,值得思考。

背包问题

背包属于基础DP,但拓展性是最高的。

具体可以看dd大牛的《背包九讲》

1 f[v]=max{f[v],f[v-c[i]]+w[i]}; 

上面的是01背包的转移方程,但v是从V...c[i]的。

为什么呢?这个方程代表第v个体积的物体的最大值=max(他自己本身,v-第i个物体的体积时的最大值+第i个物体的值)

例题

01背包基本是套这个模板,但也不缺乏很有思考性的,如P2370P2979P1156P4544(这个要单调队列优化,但纯背包有60-70分,题解在这里);

线段树单调队列优化

 

优先队列优化

 

状压DP(就是变相暴力)

 

树形DP(我最不擅长)

 

二分优化

 

还有一些提高组的就不列了(如斜率优化,数位,插头DP)

算法之DP

标签:提高   暴力   article   sub   onclick   pen   lan   span   lap   

原文地址:https://www.cnblogs.com/GREED-VI/p/9872937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!