动态规划速成攻略.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Qzyz 第 PAGE 3 页 DATE \@ "yyyy-M-d" 2010-5-14 动态规划速成攻略 福建泉州一中 倪永毅 在全国NOIP复赛中,几乎每年都会出现用动态规划思想来解决的题目,复赛中能否取得好成绩,关键就是看动态规划掌握的情况。那对于从高中入学才开始编程语言的学生来说,有没有一种方法能速成动态规划呢?本人经过几年的信息学奥赛辅导,通过对动态规划试题进行归纳、总结、优化等方面的研究,在这里浅谈下动态规划的速成攻略,不足之处请大家见谅。 精练动态规划经典试题 动态规划的试题有很多,学生刚开始学习时,一定要精挑细选,让学生做些动态规划入门的题目,这一阶段练习目的主要是让学生掌握好动态规划的一些基本概念,比如阶段、状态、决策、状态转移方程、无后效性、最优性原理等概念。 这些题目有:数字三角形(IOI1994)、拦截导弹(NOIP1999)、合唱队形(NOIP2004)、挖地雷(NOIP1996 ) 二、对动态规划类试题进行分类教学 我们把动态规划的试题按照常见的模型把它分类,然后让学生来分类掌握,触类旁通,事半功倍。 常见的动态规划可以划分以下几类: 线性类动态规划: 典型题目:数字三角形(IOI1994)、拦截导弹(NOIP1999)、合唱队形(NOIP2004),马拦过河卒(NOIP2002),免费馅饼(NOI’98),商店购物(IOI’95)等 合并类动态规划: 典型题目:石子合并(NOI’95),乘积最大(NOIP2000),能量项链(NOIP2006)、数字游戏(NOIP2003)、添括号问题(NOI'96)等 背包类动态规划: 它包括0/1背包、完全背包、有限背包、有依赖的背包等背包问题是极为经典的模型,其转化与优化也是很重要的。(详细可参考DD engi 写的《背包九讲》) 典型题目:开心的金明(NOIP2006)、采药(NOIP2005)、装箱问题(NOIP2001)、金明的预算方案(noip2006)等 4、多线程类动态规划: 典型题目:三取方格数(noip2000)、传纸条(noip2008)、巡游加拿大(IOI95)等 5、最大子段和模型 联赛还未考到这种模型,其实它也是经典利用动态规划来解决的问题之一。问题原型为求数组中的子数组之和的最大值。 用ans[i]表示包含数列第i项的前i个元素的最大和,数组no存放数列元素,则状态转移方程为: ans[0]=0; ans[i]=max{ans[i-1]+no[i],no[i]} 时间复杂度为O(n) 核心程序代码: best:=-maxlongint; temp:=0; for i:=1 to n do begin inc(temp,no[i]); if temp>best then best:=temp; if temp<0 then temp:=0; end; 它的一维改版有:求K大子段和、游览街区(NOI’97),最大子矩阵和等。二维的有:条件约束的最大子矩阵和奶牛浴场(WC’2002)等题目 6、游戏模型 这类题的阶段(一般是时间)和决策(一般就是游戏目标)很清楚,因此比较容易想到。典型题目:免费馅饼(NOI98)、Help Jimmy(CEOI2000)、瑰丽华尔兹(NOI2005,优化需要多费功夫)、矩阵取数游戏(NOIP2007)。 7、其他模型:包括树型、状态压缩类过河、资源分配类、多次动态规划等模型 典型题目有:树网的核(NOIP2007),加分二叉树(NOIP2003)、过河(NOIP2005)、机器分配(HNOI’95)等 在教学过程中,一般每种模型只讲1-2道题目或者甚至不讲,主要是把任务分解、布置好让学生自己独立完成,培养学生的自学能力。学生自己解决不了的就找人讨论,到各个论坛上提问,看解题报告等方法,最后才找老师。 提倡“一题多变”和“一题多解”,提高学生的解题能力 动态规划程序设计往往是针对一种最优化问题,由于各种问题的性质不同,确定最优解的条件也互不相同,因而动态规划的设计方法对不同的问题,有各具特色的解题方法,而不存在一种万能的动态规划算法,可以解决各类最优化问题。所以平时训练时,并不提倡题海战术,我们可以通过对经典试题的条件加以变化,形成“一题多变”和“一题多解”来培养学生分析问题、解决问题能力。 例:数的计数(NOIP2001) 【描述】 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理 (1)不作任何处理: (2)它的左边加上一个自然数,但该自然数不能超过原数的一半; (3)加上数后,继续按此规则进行处理,直到不能再而 自然数为止。 输入:6 满足条件的数为 6 (此

文档评论(0)

cai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档