- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态规划总结
专题一 状态表示
在用动态规划解题时,我么往往第一个考虑的是数组维数,其实数组维度(和状态表示)是有规律可循的:
二维空间的DP:
一般采用二位数组——d[i,j]表示当i,j为某一边角时的极值(e:d[i,j]可以表示以i,j为右上角时所能构成的正方形的边长最大值——听不懂?接着往下看)。
还有一种表示方法:d[i,num]表示走到第i各阶段的第num个位置:
1,1 2,2 3,3 4,4 5,5 6,6 2,1 3,2 4,3 5,4 6,5 7,5 3,1 4,2 5,3 6,4 7,4 8,4 4,1 5,2 6,3 7,3 8,3 9,3 5,1 6,2 7,2 8,2 9,2 10,2 6,1 7,1 8,1 9,1 10,1 11,1 这种表示解决“多次访问同一图”类的DP题很有用。
阶段决策类的DP:
这里指阶段划分十分明显的题(0/1背包)。
一般采用d[i,j]表示执行到第i各阶段,剩余代价为j时,所能取得的最高分。(如果限制条件多,可增加维度)。
树形关系类的DP:
一般用d[i]来表示以i为根节点的最优值,可以加维来保证正确性。
线性关系类的DP:
这一类的DP最简单,是每一个OIER的必备基础,在这里就不废话了。
专题二 状态转移
(专题二与专题一的分类标准不同,因为dugushuiyi说这样分更好,感谢他)
线性转移
一般公式:d[i]= operation(d[j]+w[j,i])(w[i]为由j转移到i的消耗){operation为求最值}
阶段性转移
一般公式:
d[i,j]:= operation(d[i-1,k]+w[k,j],d[i-2,……)
如果只涉及到前面的有限个阶段,可以使用滚动数组。
D[I mod n,j]= operation(d[(i-1)mod n,k]+w[k,j],d[(i-2)mod n,……)
树性转移
一般公式:
D[i,j]=max(d[lson[i],k1]+w[j,k1],d[rson[i],k2]+w[j,k2])
遍历顺序一般为后序遍历顺序。
多维空间转移
一般公式:
d[i,j]:=max(d[i-1,j]+w1,d[i,j-1]+w2)
复杂度分析:
DP的复杂度为:
状态表示的数组维数*状态转移的代价
So A 的复杂度为O(n^2)
BCD:O(n^3);
专题三 题目分类总结
一般类试题
题库:
最长不下降子序列
最长匹配前缀
邮票组合
共性总结:
题目一般可以通过for 语句来枚举状态,所以时间复杂度为O(N^2)
本类的状态是基础的基础,大部分的动态规划都要用到它,成为一个维。
一般来说,有两种编号的状态:
状态(i)表示前i个元素决策组成的一个状态。
状态(i)表示用到了第i个元素,和其他在1到i-1间的元素,决策组成有的一个状态。
01背包:(重点)★★★
题库:
01背包(USACO、vijos1025、1104)
装箱问题(NOIP01 Trade 4)、
取火柴问题(sgu153 Playing with matches)
共性总结:
一般都从阶段的角度来表示状态
因为d[i,j]只与d[i-1,k]有关,所以可以用滚动数组来实现。D[odd(i),j]
各例分析:
采药(NOIP2006、vijos)
一个背包,每个物品只能放一次。
(1)D[i,j]:=max(d[i,j],d[i,j-t[i]]+p[i]);
D[I,j]表示决策了前i个物品,花费了j的代价
优化:滚动数组.
(2)D[odd(i),j]:=max(d[i-1,j],d[odd(i-1),j-t[i]]+p[i]);
观察(2)不难发现,当我们算到j时,1(j-1并没有更新,而d[i-1,j-t[i]]一定在1(j-1的范围内,所以完全可以用一位数组,方程为:d[i]:=max(d[i],d[i-t[j]]+p[j])
在最外层循环一下j就ok了。(精益求精)
总分(USACO)
一个背包,可以重复放物品。
D[i]:=max(d[i],d[i-t[j]]+p[j])
D[i]表示花费i各单位时间所能达到的最大值。(较简单)
Raucous Rockers(USACO)
多个背包,不可以重复放物品,但放物品的顺序有限制。
d[I,j,k]:=max(d[I-1,j,k],d[I-1,j,k-t[i]]+p[i],d[i-1,j-1,maxtime-t[i]])
d[I,j,k]表示决策到第i个物品、第j个背包,此背包花费了k的空间。d[I-1,j,k]表示不取i,d[I-1,j,k-t[i]]表示取了i病房入背包j中,d[i-1,j-1,maxtime-t[i]] 表示取了
您可能关注的文档
- 第十三章 游戏发布会 创意演出节目.ppt
- C及指针读书笔记.docx
- 第五章 电脑带宽知识.doc
- 律师提醒:怎样书写借条、欠条、收条.docx
- VC中字符串和数字转换方法.doc
- 浅谈语义翻译和交际翻译的区别和运用.doc
- 统计学复习题 答案七指南.doc
- 民俗体育和学校体育的融合.doc
- 第三章 电动车型号标准.doc
- 一个性能测试问题与分析解决.doc
- 2025年文创IP衍生品创意设计理念与实践应用分析.docx
- 合成生物学在生物基材料中的应用,2025年市场增长与竞争格局报告.docx
- 2025年元宇宙虚拟会展在云计算领域的应用与行业解决方案.docx
- 跨境文化交流新平台:2025年民俗博物馆数字展览项目实施效果评估报告.docx
- 2025年房地产企业客户满意度提升策略报告.docx
- 2025年河南省五年级科学期末模拟试卷.doc
- 卫星互联网在四川藏区网络覆盖现状与未来展望.docx
- 2025年智能健身镜用户运动数据应用在健身行业消费者需求洞察报告.docx
- 2025年元宇宙赋能下的文化遗产数字化修复策略研究.docx
- 游戏IP改编影视作品受众对改编背景接受度研究报告.docx
文档评论(0)