- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态规划速成攻略
福建泉州一中 倪永毅
在全国 NOIP 复赛中, 几乎每年都会出现用动态规划思想来解决的题目, 复赛中能否取得
好成绩,关键就是看动态规划掌握的情况。那对于从高中入学才开始编程语言的学生来说,
有没有一种方法能速成动态规划呢?本人经过几年的信息学奥赛辅导,通过对动态规划试题
进行归纳、总结、优化等方面的研究,在这里浅谈下动态规划的速成攻略,不足之处请大家
见谅。
一、 精练动态规划经典试题
动态规划的试题有很多,学生刚开始学习时,一定要精挑细选,让学生做些动态规划入
门的题目,这一阶段练习目的主要是让学生掌握好动态规划的一些基本概念,比如阶段、状
态、决策、状态转移方程、无后效性、最优性原理等概念。
这些题目有:数字三角形( IOI1994 )、拦截导弹( NOIP1999 )、合唱队形( NOIP2004 )、
挖地雷( NOIP1996 )
二、对动态规划类试题进行分类教学
我们把动态规划的试题按照常见的模型把它分类,然后让学生来分类掌握,触类旁通,
事半功倍。
常见的动态规划可以划分以下几类:
1、线性类动态规划:
典型题目:数字三角形( IOI1994 )、拦截导弹( NOIP1999 )、合唱队形( NOIP2004 ),
马拦过河卒( NOIP2002 ),免费馅饼( NOI ’98 ),商店购物( IOI ’95 )等
2 、合并类动态规划:
典型题目:石子合并( NOI ’95 ),乘积最大( NOIP2000 ),能量项链( NOIP2006 )、数字游戏
(NOIP2003 )、添括号问题( NOI96 )等
3、背包类动态规划:
它包括 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 tempbest then best:=temp;
if temp0 then temp:=0;
Qzyz 第 1 页 2013-3-26
end;
它的一维改版有:求 K 大子段和、游览街区( NOI ’97 ),最大子矩阵和等。二维的有:条件
约束的最大子矩阵和奶牛浴场( WC ’2002 )等题目
6 、游戏模型
这类题的阶段(一般是时间)和决策(一般就是游戏目标)很清楚,因此比较容易想到。
典型题目:免费馅饼( NOI98 )、Help Jimmy (CEOI2000 )、瑰丽华尔兹( NOI2005 ,优化需要
多费功夫)、矩阵取数游戏( NOIP2007 )。
7 、其他模型:包
文档评论(0)