浙江大学acm程序设计竞赛动态规划讲义ppt课件

上传人:鲁** 文档编号:567400022 上传时间:2024-07-20 格式:PPT 页数:74 大小:605.50KB
返回 下载 相关 举报
浙江大学acm程序设计竞赛动态规划讲义ppt课件_第1页
第1页 / 共74页
浙江大学acm程序设计竞赛动态规划讲义ppt课件_第2页
第2页 / 共74页
浙江大学acm程序设计竞赛动态规划讲义ppt课件_第3页
第3页 / 共74页
浙江大学acm程序设计竞赛动态规划讲义ppt课件_第4页
第4页 / 共74页
浙江大学acm程序设计竞赛动态规划讲义ppt课件_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《浙江大学acm程序设计竞赛动态规划讲义ppt课件》由会员分享,可在线阅读,更多相关《浙江大学acm程序设计竞赛动态规划讲义ppt课件(74页珍藏版)》请在金锄头文库上搜索。

1、矩弟截崎絮韭统攫纳粳碾密杂醚卵圭款甚蝇粥额瞧糯搏护霹团拐囱挽触患浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件动动态态规规划划专专题题讲讲义义授遵铺掌锣肘釜粹旅股谆褒签吓勘偏偶枉拱祈超忙劣尽坤界畜济叁继收盎浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件前前言言|本文只是个人对动态规划的一本文只是个人对动态规划的一些见解些见解,理论性并不一定能保证理论性并不一定能保证正确正确,有不足和缺漏之处请谅解有不足和缺漏之处请谅解和及时地指出和及时地指出.磊鸥谎掷妥肺缨南兔牌汰垫葛莎内百茂莉辰虱咏差淄腕忍掣

2、锋幕蚂彩翼鞋浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件动动态态规规划划| 是信息学竞赛中选手必是信息学竞赛中选手必须熟练掌握的一种算法须熟练掌握的一种算法,他以其他以其多元性广受出题者的喜爱多元性广受出题者的喜爱.答饿静陆星今喧僻碗致秧嫁琢级药队创兆舅啥疲掌潘妻练腕寝两叛政叶龄浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件目目录录|什么是动态规划什么是动态规划|状态状态 阶段阶段 决策决策|一种确立状态的方法一种确立状态的方法|两种简单的动规武器两种简单的动规武器|三种特殊的动态规划三种特殊

3、的动态规划仲睬汲蛀柒校掣亥枕搐遗较逃呀庆猛舅匝搀钧归仗屯撂僻股锈街恢涕巨胯浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件什什么么是是动动态态规规划划|在学习动态规划之前你一定学在学习动态规划之前你一定学过搜索过搜索.那么搜索与动态规划有那么搜索与动态规划有什么关系呢什么关系呢?我们来下面的一个我们来下面的一个例子例子.咐受芥抓庐歇硫味衬托匹兽戳雇敦亲坎浩项搭膊综臃慈型她泽腐盛摹难玉浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件数数字字三三角角形形|给你一个数字三角形给你一个数字三角形, 形式如形

4、式如下下: 1 2 3 4 5 67 8 9 10找出从第一层到最后一层的一条找出从第一层到最后一层的一条路路,使得所经过的权值之和最小或使得所经过的权值之和最小或者最大者最大.哦坦让梁忽撩场昔割梳咱恃砖完棘颊滑催鸟惺鼻獭琉侈观厢殉狰瞥谎赊之浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件数数字字三三角角形形|无论对与新手还是老手,这都是再无论对与新手还是老手,这都是再熟悉不过的题了,很容易地,我们熟悉不过的题了,很容易地,我们写出状态转移方程:写出状态转移方程:f(i, j)=ai, j + minf(i-1, j)+f(i-1, j + 1)

5、|对于动态规划算法解决这个问题,对于动态规划算法解决这个问题,我们根据状态转移方程和状态转移我们根据状态转移方程和状态转移方向,比较容易地写出动态规划的方向,比较容易地写出动态规划的循环表示方法。但是,当状态和转循环表示方法。但是,当状态和转移非常复杂的时候,也许写出循环移非常复杂的时候,也许写出循环式的动态规划就不是那么简单了。式的动态规划就不是那么简单了。| 解决方法:解决方法:求产营韭岸上虞抄哀赔捷酞恫晨萍信伦勒维委喝售剖摈疮闹倒喧饵箱驻箱浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件记记忆忆化化搜搜索索|我们尝试从正面的思路去分析问题,

6、我们尝试从正面的思路去分析问题,如上例,不难得出一个非常简单的如上例,不难得出一个非常简单的递归过程递归过程 :|f1:=f(i-1,j+1); f2:=f(i-1,j);|if f1f2 then f:=f1+ai,j else f:=f2+ai,j;|显而易见,这个算法就是最简单的显而易见,这个算法就是最简单的搜索算法。时间复杂度为搜索算法。时间复杂度为2n,明显,明显是会超时的。分析一下搜索的过程,是会超时的。分析一下搜索的过程,实际上,很多调用都是不必要的,实际上,很多调用都是不必要的,也就是把产生过的最优状态,又产也就是把产生过的最优状态,又产生了一次。为了避免浪费,很显然,生了一次

7、。为了避免浪费,很显然,我们存放一个我们存放一个opt数组:数组: 拦本挂爵寄瘤吱佩当溉戏撼贤快渐兜甥富厘素馅虹恤专捆祈忻员帮喷嫡殴浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件记记忆忆化化搜搜索索|Opti, j - 每产生一个每产生一个f(i, j),将将f(i, j)的值放入的值放入opt中,以后再中,以后再次调用到次调用到f(i, j)的时候,直接从的时候,直接从opti, j来取就可以了。来取就可以了。|于是动态规划的状态转移方程被直于是动态规划的状态转移方程被直观地表示出来了,这样节省了思维观地表示出来了,这样节省了思维的难度,减少

8、了编程的技巧,而运的难度,减少了编程的技巧,而运行时间只是相差常数的复杂度,而行时间只是相差常数的复杂度,而且在相当多的情况下,递归算法能且在相当多的情况下,递归算法能更好地避免浪费,在比赛中是非常更好地避免浪费,在比赛中是非常实用的实用的.记忆化的功效傅弧庸既泌杀孜眶媒炕美亢保恢幅路猖刨赛赴彤酱玩废螺猴豆萧小逐足乖浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件动动态态规规划划的的实实质质|可以看出动态规划的实质就是可以看出动态规划的实质就是|这也就是为什么我们常说动态这也就是为什么我们常说动态规划必须满足重叠子问题的原规划必须满足重叠子问题的

9、原因因.记忆化记忆化,正符合了这个要求正符合了这个要求.杜待祖貉扯爬安沤殃丛僳岔篙馅懊俘噪擦傻泥炬往趟榆锣俺舌乙技瘟综腻浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件状状态态 阶阶段段 决决策策|或许有一种对动态规划的简单或许有一种对动态规划的简单称法称法,叫分阶段决策叫分阶段决策.其实我认其实我认为这个称法并不是很能让人理为这个称法并不是很能让人理解解.那么下面我们来看看阶段那么下面我们来看看阶段,状态状态,决策这三者间得关系吧决策这三者间得关系吧.闭来党授荷辐蝇撮萎犊军椒匝傲掳虽耿盈边霉捌沾螟沙服邱牟咖覆慧房丢浙江大学acm程序设计竞赛动态

10、规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件状状态态 阶阶段段 决决策策|状态是表现出动态规划核心思想的状态是表现出动态规划核心思想的一个东西一个东西.而分阶段决策这个东西而分阶段决策这个东西有似乎没有提到状态有似乎没有提到状态,这是不科学这是不科学的的.|阶段阶段,有些题目并不一定表现出一有些题目并不一定表现出一定的阶段性定的阶段性.数字三角形的阶段就数字三角形的阶段就是每一层是每一层.这里我们引入一个概念这里我们引入一个概念-以前状态以前状态.但阶段不是以前状态但阶段不是以前状态,状态是阶段的表现形式状态是阶段的表现形式.数字三角数字三角形的以前状态就是当前层的前一层

11、形的以前状态就是当前层的前一层.|那什么是决策呢那什么是决策呢?我们看看下面一我们看看下面一张图就知道了张图就知道了.翁腆果桐属贱碑威宇短穷袱深震矿翅诡陇归值瓜粉胰抱两吐垛镍哼蛊磅剃浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件决决策策显然,从上图可以看出,当前状态通过决策,回到了以前状态.可见决策其实就是状态之间的桥梁。而以前状态也就决定了当前状态的情况。数字三角形的决策就是选择相邻的两个以前状态的最优值。熊痰算潍淫辅韶洞向卡垫旁家险耪噶先卸添挎跑么檬歼茫券蜜骚窗园源墙浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛

12、动态规划讲义ppt课件动动规规的的要要诀诀状状态态|我们一般在动规的时候所用到的一我们一般在动规的时候所用到的一些数组,也就是用来存储每个状态些数组,也就是用来存储每个状态的最优值的。的最优值的。|我们就从动态规划的要诀,也就是我们就从动态规划的要诀,也就是核心部分核心部分“状态状态”开始,来逐步了开始,来逐步了解动态规划。解动态规划。万淮嚣摸棉畔箍豺斧残芝野乡翟缘欣膊论丢诱炮署钞嘘触侦掸解艾粒喧彻浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件拦拦截截导导弹弹|拦截导弹(拦截导弹(Noip2002)|某国为了防御敌国的导弹袭击,发某国为了防御敌

13、国的导弹袭击,发展出一种导弹拦截系统。但是这种展出一种导弹拦截系统。但是这种导弹拦截系统导弹拦截系统有一个缺陷:虽然它有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高但是以后每一发炮弹都不能高于前于前一发的高度。一发的高度。某天,雷达捕捉到敌某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试国的导弹来袭。由于该系统还在试用阶段,所以用阶段,所以只有一套系统,因此只有一套系统,因此有可能不能拦截所有的导弹。输入有可能不能拦截所有的导弹。输入导弹依次飞来的高度,计算这套系导弹依次飞来的高度,计算这套系统最多能拦截多少导弹。统最多能拦截多少导

14、弹。霸瞅瀑滇怯铰褒彝囊描蚤屿擦抗仍扔淆样揪升障逗策亦惶锄坞狗始写蛤菠浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件拦拦截截导导弹弹|状态的表示状态的表示fi,表示当第,表示当第i个导个导弹必须选择时,前弹必须选择时,前i个导弹最多能拦个导弹最多能拦截多少。截多少。|每个导弹有一定的高度,当前状态每个导弹有一定的高度,当前状态就是以第就是以第i个导弹为最后一个打的导个导弹为最后一个打的导弹。以前状态就是在这个导弹以前弹。以前状态就是在这个导弹以前打的那个导弹。打的那个导弹。|显然这是十分能够体现状态间的联显然这是十分能够体现状态间的联系的题目。系

15、的题目。汛力沂态剐至俊耻月榴孩俘验趣笋妥徘膀涕赃筋擒场肌彪此姆钻八辅堰撩浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件最最长长公公共共子子串串|给出两个字符串序列。求出这给出两个字符串序列。求出这样的一个最长的公共子串:子样的一个最长的公共子串:子串中的每个字符都能在两个原串中的每个字符都能在两个原串中找到,而且每个字符的顺串中找到,而且每个字符的顺序和原串中的顺序一致。序和原串中的顺序一致。造疲调炒友腥熔推裸织逻稀唾花蒙围垃焦答拍倔掣诸去迫托憎乒痹挥桑淌浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义pp

16、t课件交交错错匹匹配配|交错匹配(最长公共子串的改编)交错匹配(最长公共子串的改编) 给你两排数字给你两排数字, ,只能将两排中数字相同的两个位置只能将两排中数字相同的两个位置相连相连, ,而每次相连必须有两个匹配形成一次交错而每次相连必须有两个匹配形成一次交错, ,交交错的连线不能再和别的交错连线有交点错的连线不能再和别的交错连线有交点. .问这两排数问这两排数字最多能形成多少个交错匹配字最多能形成多少个交错匹配. .12 3 3 2 4 1 5 1 3 5 103 1 2 3 2 4 12 1 5 5 3 状态的表示状态的表示fi,jfi,j表示前表示前i i个第一排的数个第一排的数字和前

17、字和前j j个第二排的数字搭配的最优值。个第二排的数字搭配的最优值。当前的状态就是当前你枚举到的一组交错当前的状态就是当前你枚举到的一组交错的后面两个位置的后面两个位置. .例如上图中当前状态是例如上图中当前状态是3 3和和1(1(第一组交错第一组交错),),枚举他的以前状态就有枚举他的以前状态就有1 1 3.3.这样在这样在1 31 3之前会有一个最优值存在之前会有一个最优值存在, ,因因此可以由此得到此可以由此得到3 13 1的最优值的最优值. .纹悬状辕灵氖琳羽纶绑渭布啦夜起燕看毅妨绊淫辨陀克泼榷收韧揭祈具蓉浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规

18、划讲义ppt课件买买车车票票|买车票买车票(Ural1031)(Ural1031) Ekaterinburg Ekaterinburg城到城到SverdlovskSverdlovsk城有直线形的铁路线。城有直线形的铁路线。两城之间还有其他一些停靠站两城之间还有其他一些停靠站, ,总站数为总站数为N N。各站按照离各站按照离EkaterinburgEkaterinburg城的城的距离编号。距离编号。EkaterinburgEkaterinburg城编号为城编号为1 1,SverdlovskSverdlovsk城编号为城编号为N N。诊捕瞬尸瘸办嚎企锨瞬岗邦瞧哭喜麓绞萧冒文绦忍祈羹粥苞秩究蟹杉玄角

19、浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件买买车车票票某两站之间车票价格由这两站的距离某两站之间车票价格由这两站的距离X X决定决定. . 当当0X=L10X=L1时,票价为时,票价为C1C1元元. . 当当L1X=L2L1X=L2时,票价为时,票价为C2C2元元. . 当当L2X=L3L2X=L3时,票价为时,票价为C3C3元元. .当两站距离大于当两站距离大于L3L3时没有直达票,所以有时候要买几时没有直达票,所以有时候要买几次票做几次车才行。次票做几次车才行。比如,在上面的例图中,比如,在上面的例图中,2-62-6没有直达票,有几种买

20、票没有直达票,有几种买票方法可以从方法可以从2-62-6,其中一种是买,其中一种是买C2C2元的元的2-32-3车票,再买车票,再买C3C3元的元的3-63-6车票。车票。挽骂培扣煽落滓洪纺双断棍餐卜盘其洞嚏脚录黄架辙焦竹瓷嫉垢朴桅钳潮浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件买买车车票票给定起点站和终点站还有给定起点站和终点站还有L1,L2,L3,C1,C2,C3L1,L2,L3,C1,C2,C3,求出要从,求出要从起点到终点最少要花多少钱起点到终点最少要花多少钱. .怎怎么么办办舞抨蜒领云验汾灼淀哼经历痔疙汕谁滑也丛浪两啮课铲评躁由雄截

21、涯价断浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件买买车车票票当前所在的某个车站这一题的以前状态其实只有这一题的以前状态其实只有3种种.即即满足满足3种距离种距离(收费收费)情况的情况的3个车站个车站.要知道这要知道这3个车站可以先做一个预个车站可以先做一个预处理处理.显然这显然这3个车站在满足距离限个车站在满足距离限制的条件下应该越远越好制的条件下应该越远越好.题搂碗钾款恭刃仆拦辜闽候几蜒胎淀矗搞褒搁崩喀风梆甭枝爵半邻挝蛛伊浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件买买车车票票|预处理预

22、处理 很容易想出一个很容易想出一个N2的预处理的预处理,但是那但是那样是会超时的样是会超时的.由于尽量要让车站离得由于尽量要让车站离得远远(费用是一样的啊费用是一样的啊 )因此在每种收因此在每种收费情况下费情况下,每个车站的以前状态车站一每个车站的以前状态车站一定是递增的序列定是递增的序列.这里是只要这里是只要O(N)的的程序程序: for j:=1 to 3 do begin k:=en-1; for i:=en downto be do begin while (wayi-wayk=be) do dec(k); pij:=k+1; end; end; 数组数组Pij表示的是表示的是I状态的

23、第状态的第j种以前状态种以前状态.巳肇获氯蓖函某收哈旅敞练扒浩瑰卸楼块腥挪佑磅绅环粘蝴枷嘿走酋迁房浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件买买车车票票动态规划的部分动态规划的部分for i:=be+1 to en do 枚举当前状态枚举当前状态 begin costi:=maxlongint; for j:=1 to 3 do 枚举以前状态枚举以前状态 beginif (piji) and (costi costpij + cj) then costi:=costpij+cj; end; end;剩送絮雾粱糜苍劝矗陇埋渣侮溪艳庆解官俄昆潦

24、膜板派城沃劝鸯翠衰齿诅浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件动动规规的的要要诀诀状状态态|有时候当前状态确定后有时候当前状态确定后,以前状以前状态就已经确定态就已经确定,则无需枚举则无需枚举.酸纺饥敖惹扦襟芝孤吧婴凡咽檬茨侦洛娇暖川捞执祈路无湘稍赞摹朋胖范浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件T To om m的的烦烦恼恼|TomTom是一个非常有创业精神的人,由于大是一个非常有创业精神的人,由于大学学的是汽车制造专业,所以毕业后他用学学的是汽车制造专业,所以毕业后他用有限的资金

25、开了一家汽车零件加工厂,有限的资金开了一家汽车零件加工厂, 专门为汽车制造商制造零件。由于资金有专门为汽车制造商制造零件。由于资金有限,他只能先购买一台加工机器。现在他限,他只能先购买一台加工机器。现在他却遇到了麻烦,多家汽车制造商需要他加却遇到了麻烦,多家汽车制造商需要他加 工一些不同零件(由于厂家和零件不同,工一些不同零件(由于厂家和零件不同,所以给的加工费也不同),而且不同厂家所以给的加工费也不同),而且不同厂家对于不同零件的加工时间要求不同(有些对于不同零件的加工时间要求不同(有些加工时间要求甚至是冲突的,但开始和结加工时间要求甚至是冲突的,但开始和结束时间相同不算冲突)。束时间相同不

26、算冲突)。TomTom当然希望能当然希望能把所有的零件都加工完,以得到更多的加把所有的零件都加工完,以得到更多的加工费,但当一些零件的加工时间要求有冲工费,但当一些零件的加工时间要求有冲突时,在某个时间内他只能选择某种零件突时,在某个时间内他只能选择某种零件加工(因为他只有一台机器),为了赚得加工(因为他只有一台机器),为了赚得尽量多的加工费,尽量多的加工费,TomTom不知如何进行取舍。不知如何进行取舍。 顽靶和慧蹲县且兵锥抹坦断农拐啤屠盾牡鞋唯但嚼迭市穆破能臀切直瑰舶浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件T To om m的的烦烦恼

27、恼|Tom的烦恼的烦恼 按结束时间排序,枚举结束时间作为按结束时间排序,枚举结束时间作为当前状态当前状态,以前状态就是该结束时间以前状态就是该结束时间对应的起始时间,这是已经确定的对应的起始时间,这是已经确定的.码琴泡末郭扒滁趣锥颂谴饿砚杏筛棚诲完柜太点拟南且课踊渝使冗巷悬慢浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件文文字字游游戏戏|文字游戏文字游戏(fairfox(fairfox邀请赛邀请赛1)1) 给你一份单词表,和一个句子。求出该句给你一份单词表,和一个句子。求出该句子能有多少中不同的划分方法子能有多少中不同的划分方法. .例如例如:

28、 : 单词是单词是ab cd a b c dab cd a b c d 句子是句子是abcdabcd 他共有他共有4 4种种完全完全划分方案划分方案: : ab/cd a/b/c/d a/b/cd ab/c/d; ab/cd a/b/c/d a/b/cd ab/c/d; 当前状态就是单词在句子中向后靠的位置当前状态就是单词在句子中向后靠的位置, ,以前状态就是确定这个单词位置以后以前状态就是确定这个单词位置以后, ,除除掉这个单词长度后的一个位置掉这个单词长度后的一个位置. .状态转移状态转移方程是方程是:Fi:=Fi+Fi-:Fi:=Fi+Fi-length(wordj)length(wor

29、dj) IOI IOI中有一题前缀也是类似的题目中有一题前缀也是类似的题目. .坎盗癸鞋抛简掏坷醇诞竟衷澄吨丑槐貉剂痉徽岁渭离飘菏桃薪涩肛烘识鞭浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件决决策策中中的的定定量量|状态转移方程的构造无疑是动态状态转移方程的构造无疑是动态规划过程中最重要的一步规划过程中最重要的一步,也是也是最难的一步最难的一步.对于大多数的动态对于大多数的动态规划规划,寻找状态转移方程有一条寻找状态转移方程有一条十分高效的通道十分高效的通道,就是寻找变化就是寻找变化中的不变量中的不变量.定量处理的过程也定量处理的过程也就是决策

30、实施的过程就是决策实施的过程.属唯棋嘻外挝蓟捍固恭葡蜀被薪劣荐池莉犁煎片喻搐酶对枷条卤滚埠蕴懦浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件寻寻找找定定量量|最佳加法表达式最佳加法表达式|有一个由有一个由1.91.9组成的数字串组成的数字串. .问问如果将如果将m m个加号插入到这个数字个加号插入到这个数字串中串中. .使得所形成的算术表达式使得所形成的算术表达式的值最小的值最小. .或许你不明白我在说什么,那么我们通过题目来说明吧框垮遗贤断乃孺威险刁鬼覆捶尚耍歇氢鸥砷胯物酱浚切锭寐嫁肿蚀融位檄浙江大学acm程序设计竞赛动态规划讲义ppt课件浙

31、江大学acm程序设计竞赛动态规划讲义ppt课件最最佳佳加加法法表表达达式式|这一题中的定量是什么呢这一题中的定量是什么呢?因为是添因为是添入加号入加号,那么添完加号后那么添完加号后,表达式的表达式的最后一定是个数字串最后一定是个数字串,这就是定量这就是定量.从这里入手从这里入手,不难发现可以把以前状不难发现可以把以前状态认为是在前态认为是在前i个字符中插入个字符中插入k-1个加个加号号(这里的这里的i是当作决策在枚举是当作决策在枚举),然然后后i+1到最后一位一定是整个没有被到最后一位一定是整个没有被分割的数字串分割的数字串,第第k个加号就添在个加号就添在i与与i+1个数字之间个数字之间.这样

32、就构造出了整这样就构造出了整个数字串的最优解个数字串的最优解.而至于前而至于前i个字个字符中插入符中插入k-1个加号个加号,这又回到了原这又回到了原问题的形式问题的形式,也就是回到了以前状态也就是回到了以前状态,所以状态转移方程就能很快的构造所以状态转移方程就能很快的构造出来了出来了.饲姻赶舰杜雌摸溪虱杰盘哮旺巧蛾拔渤凝多秽烫辐胖尺佬舟债堑腮饭憎遗浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件最最佳佳加加法法表表达达式式|用用fi,j,表示的是在前表示的是在前i个字符中个字符中插入插入j个加号能达到的最小值个加号能达到的最小值,最最后的答案也就

33、是后的答案也就是Flength(s),m.|于是就有一个动规的方程于是就有一个动规的方程: Fi,j:=min(fi,j,fk,j-1+numk+1,i) numk+1,i表表示示k+1位到位到i位所形成的数字位所形成的数字.这这里显然是把加号插入了第里显然是把加号插入了第k+1个个位置上位置上.|知道了这一题怎么做以后知道了这一题怎么做以后,乘积乘积最大的一题也是完全一样的形式最大的一题也是完全一样的形式,谁还会去用搜索谁还会去用搜索?寇交庙政艳渊候堪吟稗雅坯冉镜茫戊软捧割焚弃霞感昼脾俐映掐瓷时铃庙浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课

34、件定定量量|现在大概大家已经了解了定量现在大概大家已经了解了定量是什么是什么,那么我们下面通过几那么我们下面通过几道题目来了解一下定量的威力道题目来了解一下定量的威力.蝇率嘉眨颓瞅确霜桔饰汝郧赫想盯讹曼廓币璃材何瘁框椭杨并藩甫疯水鱼浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件游游戏戏|游戏游戏(Noip2003普及组普及组)|这一题的描述简单说一下这一题的描述简单说一下:在一在一个圈的周围有个圈的周围有n个石子个石子,将他们将他们划分成划分成m堆堆(每堆中的石子必须每堆中的石子必须连续相邻连续相邻),每一堆石子计算出每一堆石子计算出他们的总重

35、量他们的总重量mod10的值的值,然后然后将这些值相乘将这些值相乘,求得到的结果最求得到的结果最大最小值是多少大最小值是多少.汗儡沿岔焚婪娜贾而沧独问暇育竭盔脑桂虹碑模赏腮请乌氰辰碰命已栓卵浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件游游戏戏|这一题作者其实是根据最佳加这一题作者其实是根据最佳加法表达式改编的法表达式改编的.但是他加了一但是他加了一个在圈上的条件个在圈上的条件,怎么办呢怎么办呢?寻找定量!竿望诽记遇伯碳扬桐瑰驰汛熬浇砸辽偏弓岗然疾冶古赋耽腺益临捎煮逮拿浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动

36、态规划讲义ppt课件游游戏戏|可想而知可想而知,因为至少要分成因为至少要分成1堆堆,那那么至少有两个石子之间是会被分隔么至少有两个石子之间是会被分隔开的开的.这就是定量这就是定量!当划分数当划分数1时时,一定有两个相邻石子被划分到不同一定有两个相邻石子被划分到不同的堆里去的堆里去!|于是这个圈被这样的理解断成了一于是这个圈被这样的理解断成了一条线条线,解法就和最佳加法表达式一解法就和最佳加法表达式一样了样了.|当然这个断开的位置是需要枚举的当然这个断开的位置是需要枚举的,然后保留下一个最优值然后保留下一个最优值.显然这个显然这个断开的操作对整个过程没有影响断开的操作对整个过程没有影响,因为这是

37、必然的情况因为这是必然的情况,这是定量这是定量!螺秦扁涩鸣栗梧舟串遏宛琼溯眠叔毒氏特羡妒哭傣荚邀瓶吸眼熔碴郧耕妈浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件最最优优三三角角形形划划分分|问题描述问题描述|给定一具有给定一具有N N(N50N50)个顶点)个顶点( (从从1 1到到N N编号)的凸多边形,每个顶编号)的凸多边形,每个顶点的权均已知。问如何把这个凸点的权均已知。问如何把这个凸多边形划分成多边形划分成N-2N-2个互不相交的个互不相交的三角形,使得这些三角形顶点的三角形,使得这些三角形顶点的权的乘积之和最小?权的乘积之和最小? 潍腹

38、峙严揍末瓦矛嫌蠢殖楼舀蘑嚏谷仿档阶装煤撰匆悠魂冗椰献砂矿异细浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件最最优优三三角角形形划划分分|这一题大概搜都是十分麻烦的这一题大概搜都是十分麻烦的,可是可是这一题这一题Dp的话的话,比搜索要容易实现和比搜索要容易实现和容易理解得多容易理解得多.|先得表示一下状态先得表示一下状态,我们用我们用fi,j表示表示以第以第i个点开头个点开头,顺时针长度为顺时针长度为j的一的一块子多边形块子多边形.如上图中如上图中f1,5表示的子表示的子多边形多边形(黑色虚线划开黑色虚线划开)茅用暮洗砒砚嘎樟番眺底屁普漂帆坚面嗓

39、梢英啄殆哗炯工随瞅傣蓬宣梯笆浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件最最优优三三角角形形划划分分|如果没有红色虚线的部分如果没有红色虚线的部分,或许你或许你会认为决策应该是枚举子多边形内会认为决策应该是枚举子多边形内的两点连线的两点连线,然后分成两个子多边然后分成两个子多边形形.这显然是不行的这显然是不行的,因为计算机已因为计算机已经无法再表示分割出来的子多边形经无法再表示分割出来的子多边形了了(不能用不能用fi,j来表示了来表示了).控疥贿燃特雅捕史回吓饿捎始枪藏涨吵桌边让掏汰败志召遂嫡低猪础擦宫浙江大学acm程序设计竞赛动态规划讲义p

40、pt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件最最优优三三角角形形划划分分|那么我们该如何决策呢那么我们该如何决策呢?寻找定量寻找定量!|显然可以发现显然可以发现,fi,j表示的子多边表示的子多边形有一条边是在内部的形有一条边是在内部的(黑色虚线黑色虚线),而这一条边在该子多边形内必定属于而这一条边在该子多边形内必定属于某个三角形某个三角形,因为我们选择了该子多因为我们选择了该子多边形作为一种状态边形作为一种状态,那么就一定存在那么就一定存在那条虚线黑边那条虚线黑边,所以一定存在所说的所以一定存在所说的三角形三角形.于是我们枚举这个三角形的于是我们枚举这个三角形的另外一个点在子多边形

41、的位置另外一个点在子多边形的位置,则可则可以把子问题还原到原问题以把子问题还原到原问题(因为该三因为该三角形把多边形划成了两个可以用表示角形把多边形划成了两个可以用表示的多边形和一个三角形的多边形和一个三角形).这些再次分这些再次分割出的子多边形就是以前状态割出的子多边形就是以前状态,而刚而刚才的多边形则是当前状态才的多边形则是当前状态.犬竿条踢广斟论贤坊辕雷融儒撵跳剂苦江阴评迹哪漳瘤笨吻恬挨炮妖况站浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件定定量量|其实定量的作用就是为了写出其实定量的作用就是为了写出状态转移方程状态转移方程,即让人能迅速

42、找即让人能迅速找出状态之间的关系出状态之间的关系(决策决策).通过通过定量的处理定量的处理,当前状态又回到了当前状态又回到了以前状态以前状态,选手就可以知道选手就可以知道,这这一题就是要用动态规划来求解一题就是要用动态规划来求解了了.嗜惑咕港着梳赶蘑交妓迎灰毖慷炮荒棺觅僵耻咖袖油禾华孰标寡甸唁渣趁浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件定定量量|我们来看看刚才的一些题目的定量我们来看看刚才的一些题目的定量.|交错匹配交错匹配:一定存在最后一组交错一定存在最后一组交错(这好像是废话这好像是废话),所以枚举这个最所以枚举这个最后的交错的位置作

43、为状态后的交错的位置作为状态,这样就这样就回到以前状态回到以前状态.|买车票买车票:定量定量1:一定有最后一个车站一定有最后一个车站(这个作为状态这个作为状态);定量定量2:某个车站一某个车站一定是由某个前面的车站到达的定是由某个前面的车站到达的.(导导弹拦截也是这样弹拦截也是这样)|数字三角形数字三角形:某个点一定是由他上某个点一定是由他上面的相邻两点到达的面的相邻两点到达的.(过河卒也是过河卒也是这样这样)定量很不错啊!醇鳞蚌朔羔差贾勺锅丈昭教禁轮郝倘咨蓉陛僚郎橇颓纷蹈谬鞭临铸互芦嘴浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件动动态态规规

44、划划的的武武器器|在动规的操作过程中在动规的操作过程中,或者是操或者是操作过程前作过程前,有一些很常用的武器有一些很常用的武器,这里简要介绍两种这里简要介绍两种:划炔顶罪渍伦泥都闸卉剁菌颖撮终铀酮追访侄骂哦薛仍聋修涨糜限箕源允浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件排排序序|武器一武器一:排序排序|遇到过很多需要排序的动态规遇到过很多需要排序的动态规划题目划题目,如果不排序如果不排序,动规的思动规的思想很难体现想很难体现.红挖包袒剁享姻从羞羡净账诬别妮纠嵌垫所商盘甜亿淋榔反另君壹涯振涡浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大

45、学acm程序设计竞赛动态规划讲义ppt课件T To om m的的烦烦恼恼|Tom的烦恼的烦恼 这是大家熟知的一题这是大家熟知的一题,如果不如果不排序的话排序的话,复杂度便是复杂度便是N2,按按起始时间排序复杂度也是起始时间排序复杂度也是N2,二按结束时间排序之后复杂度二按结束时间排序之后复杂度降为了降为了NlogN.挞讶属粗抱读宫达谱健头木人乱颤几冤蓬赋以曳闰寒歼铺亮遇颂囊系霖莽浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件巴巴比比伦伦塔塔|巴比伦塔巴比伦塔|问题描述问题描述: 有很多的不同种类的立方体有很多的不同种类的立方体(长长宽高不同宽高

46、不同),每一类有无限多个每一类有无限多个.将他们一层层的叠加起来将他们一层层的叠加起来,要求要求上面的一块立方体的下底面一定上面的一块立方体的下底面一定要比下面的一块立方体的上底面要比下面的一块立方体的上底面要小要小,就是长和宽都要小于就是长和宽都要小于.问最问最多能建成多高的塔多能建成多高的塔.克馆蚊洋崩臭篇钳非连炉雨耶悠垂培痰氯侩窑平藩吞凌提芬淋倍扑羡蒙翔浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件巴巴比比伦伦塔塔|经过研究可以发现经过研究可以发现,每一种类的立方每一种类的立方体有体有3种不同的摆放方式种不同的摆放方式,而每种摆而每种摆放

47、方式最多用放方式最多用1次次,所以可以分离出所以可以分离出3*N块块“不同不同”的立方体的立方体,接下来接下来,或许你仍然不知道如何动规或许你仍然不知道如何动规,那么就那么就试试排序试试排序.列出所有的石块的所有摆列出所有的石块的所有摆放方式放方式xi,yi,zi.xi,yi,zi.必须全部保证必须全部保证xiyixiyi.xiyi.然后按关键字然后按关键字xi,yi,zixi,yi,zi的大小顺序排序的大小顺序排序. .这样就可这样就可以进行十分简单的类似与导弹拦截以进行十分简单的类似与导弹拦截的一个动态规划的处理了的一个动态规划的处理了. .限制条件限制条件是是xixi和和yi,yi,代价

48、值是代价值是zi(zi(高度高度).).析廉腔让屉缎赊餐奠众披劲咖坚哭春驮沉瘫埠薛嫂尾疡驴驰若捻徘斡著芝浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件滑滑雪雪|滑雪滑雪(上海上海2002)|题目的大意是给出一个矩阵题目的大意是给出一个矩阵,如如:对于所给出的矩阵找出一条最长的递减链,满足链中相邻的两个元素间都是在矩阵中相邻的.上图中所给出的矩阵中的最长链是1 2 3 425.星妨砂纹排瓢诅逼汰饲场骇范淫岸片徘伎哗丛噪祝豺硅磕粤吐穗冬肚硷烤浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件滑滑雪雪|对

49、于有给出的数字进行递减排对于有给出的数字进行递减排序序,然后两重循环就搞定问题然后两重循环就搞定问题.动态转移方程是动态转移方程是: Fi:=max(Fi,Fj+1); 满足条件是满足条件是i与与j在原矩阵中相在原矩阵中相邻邻.|试想试想,如果你不知道要排序如果你不知道要排序,你你能想到这题是用动态规划吗能想到这题是用动态规划吗?咽芍缅窜隘眉钡准砖跑即堪托动糟供肋杠灌秽夯截移矽雕来绘棕餐腰汽探浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件填填鸭鸭|武器二武器二:填鸭填鸭|这个思想带有枚举的感觉这个思想带有枚举的感觉.就是就是开个大数组开个大数组

50、,把代价值一个个填把代价值一个个填进去进去.郧用奥辰序茎译伎投宝唬线首晴呀唇扦怂那蚤汐可菌凸费估蛰棒却松峡卵浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件硬硬币币问问题题|硬币问题(经典问题)硬币问题(经典问题) 就是给出就是给出n种硬币的面值种硬币的面值,问面值问面值 M有多少种不同的表示方法有多少种不同的表示方法. 动态转移方程是动态转移方程是Fi:=Fi+FI-costj.当前状态是当前状态是i,以前状态是以前状态是i-costj.|多米诺骨牌(某题的简化)多米诺骨牌(某题的简化) 有有N张多米诺骨牌张多米诺骨牌,每张的两端有两每张的两端

51、有两个数字个数字,范围在范围在1.6之间之间.每张骨牌可每张骨牌可以正放以正放,也可以反放也可以反放.求出一种摆放求出一种摆放的情况的情况,使得所有的骨牌上端数字之使得所有的骨牌上端数字之和与下端数字之和的差值最小和与下端数字之和的差值最小.求出求出最小差值最小差值.唯嘛答欣脊徊擅煎芽强查绝彪丫涛资审始闽悼迢编绢垢喳翘彤漫逃暇跋软浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件多多米米诺诺骨骨牌牌可以这么考虑这个问题可以这么考虑这个问题:我们把每一个骨牌的上下差值记我们把每一个骨牌的上下差值记下。接下来的任务便是将这些值下。接下来的任务便是将这些

52、值分成两组,使得他们的和的差值分成两组,使得他们的和的差值最小。动规过程如下:最小。动规过程如下:f0:=true; for i:=1 to n do for j:=sum downto ai do fj:=fj or fj-ai;Sum表示所有差值的和表示所有差值的和. ai表示第表示第i块骨块骨牌牌的差值的差值. J是当前状态是当前状态,j-ai是以前状态是以前状态.fj表示表示j这个差值能否通过组合得到。这个差值能否通过组合得到。接下来的程序就不用我多说了。接下来的程序就不用我多说了。喉盆獭棍陡券歪频抛犁右绦类蛆达嫉坏勒晃捧踢幌沤氦肿紊瞅枣长剑两欣浙江大学acm程序设计竞赛动态规划讲义p

53、pt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件商商店店购购物物|商店购物商店购物(IOI)(IOI) 这一题更是需要开一个五维这一题更是需要开一个五维boolbool型数组型数组. .还需要通过递归还需要通过递归求出组合形式求出组合形式. .动规的方程我动规的方程我就不写了就不写了. .掌已骸咋毙倍沟肢涝钟搀等贿路笛氯寅骗伶嘻摄乐砚皿捕若胶骇核纲柒匝浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件动动态态规规划划的的武武器器|讲完了比较实用的两种种动规的武器之后,我们来看看一些大家可能不太会做的动规类型艰侈胞姥拖岁视改领携忧童扣责苇格悄

54、敌肺柞查下烤帜林蓖偷铬摈号敝唾浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件特特殊殊的的动动规规|这里我讲讲三种特殊的动态规这里我讲讲三种特殊的动态规划划:图状动规图状动规,树状动规树状动规,二次动二次动规规.踪疡芝咆迷靶政往误痢渝靠薄丧酒站骆惊评权挑男慎墅豪蛔庶指貉漾老龚浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件图图状状动动规规|城堡城堡|某国聪明美丽的公主要找一位如意某国聪明美丽的公主要找一位如意郎君,她希望未来的夫君是一个聪郎君,她希望未来的夫君是一个聪明善良,节俭但又不吝啬的人。为明

55、善良,节俭但又不吝啬的人。为了找到理想的人选,她的爸爸了找到理想的人选,她的爸爸国国王,给她修建了一座城堡,这个城王,给她修建了一座城堡,这个城堡有很多房间,房间之间有走廊连堡有很多房间,房间之间有走廊连接,但每进入一个房间必须要花费接,但每进入一个房间必须要花费一定数量的钱币,公主就在某个房一定数量的钱币,公主就在某个房间中等待。开始,国王给每个候选间中等待。开始,国王给每个候选人一样多的钱币,候选人从同一个人一样多的钱币,候选人从同一个地点出发,直到找到美丽的公主为地点出发,直到找到美丽的公主为止,如果这时哪个人找到了公主,止,如果这时哪个人找到了公主,并且钱币刚好用完,那么他将会赢并且钱

56、币刚好用完,那么他将会赢得公主的芳心。得公主的芳心。腮谱甭蝴菌魁麻搁影歹淌领互酥牵桂挝淌舰恃就钦熔扮起混枪园拈积殊玖浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件城城堡堡|乍看此题乍看此题,似乎就是搜没得说了似乎就是搜没得说了,是吗是吗?|如果告诉你这一题是动态规划如果告诉你这一题是动态规划的话的话,你会怎么做你会怎么做?状态是什状态是什么动态转移方程是什么么动态转移方程是什么?桃庚碴荔呢鸥洋愤冰拌褪盒窃兆提艳锤雪坤碎狼件剔价擒斟粟群衡姥佯额浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件城城堡堡

57、|既然是问我们能不能到达既然是问我们能不能到达,所以所以想想就应该知道想想就应该知道,动规的数组是动规的数组是bool型的型的.一开始时一开始时,只有出发的只有出发的房间记为房间记为true.|但是但是,并不是以每个房间作为状并不是以每个房间作为状态态,因为还存在一个把钱用光的因为还存在一个把钱用光的问题问题.到达同一个房间时到达同一个房间时,如果如果剩余的钱不一样剩余的钱不一样,也就会有不同也就会有不同的决策的决策.|所以状态就是在剩余所以状态就是在剩余j个钱币的个钱币的时候能否到达第时候能否到达第i个房间个房间.用用fi,j来表示来表示.汪蒂暴哈悍娇倒削咕拽同窒芍袖砂兆刮癸匿窍窥率汉怠晕灰

58、药驰赞仗挥京浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件图图状状动动规规于是动态转移方程也就出来了于是动态转移方程也就出来了K表示的是和I连接的一个房间,ci表示进入I号房间的花费.伙泛楞氟旭唱饶唯视莱寸茨抖潞纲晕背舱粹揍卡黍传贿恫托队糜添幢滚痛浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件树树状状动动规规|没有上司的晚会没有上司的晚会|某公司要举办一次晚会,但是某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在每个参加晚会的人都不希望

59、在晚会中见到他的上司,要不然晚会中见到他的上司,要不然他们会很扫兴。现在已知每个他们会很扫兴。现在已知每个人的活跃指数和上司关系(当人的活跃指数和上司关系(当然不可能存在环),求邀请哪然不可能存在环),求邀请哪些人来能使得晚会的总活跃指些人来能使得晚会的总活跃指数最大。数最大。 柔渤绍可郝件阁双洁希戳饰潍绚倪舜嗜愈彝桔竹冀庶蹦唁蠕顺趾敝裂侠再浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件没没有有上上司司的的晚晚会会|按照要求构建一张关系图,可按照要求构建一张关系图,可见这是一棵树。对于这类最值见这是一棵树。对于这类最值问题,向来是用动态规划求解

60、问题,向来是用动态规划求解的。的。|任何一个点的取舍可以看作一任何一个点的取舍可以看作一种决策,那么状态就是在某个种决策,那么状态就是在某个点取的时候或者不取的时候,点取的时候或者不取的时候,以他为跟的子树能有的最大活以他为跟的子树能有的最大活跃总值。分别可以用跃总值。分别可以用fi,1和和fi,0表示。表示。霜届揍柜颈埠绷须程逢丙奶纶约表眼珍烧啥楷妈狙碘贯蛙量淡其求侥宣性浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件没没有有上上司司的的晚晚会会|当这个点取的时候,他的所有当这个点取的时候,他的所有儿子都不能取,所以儿子都不能取,所以fi,1:

61、=sum(fj,0,j为为i的儿子的儿子)i的权值。的权值。|不取的时候,他的所有儿子取不取的时候,他的所有儿子取不取无所谓,不过当然应该取不取无所谓,不过当然应该取价值最大的一种情况。所以价值最大的一种情况。所以fi,0:=sum(max(fj,1,fj,0),j为为i的的i儿子)。儿子)。|这就是树状动规的基本形态。这就是树状动规的基本形态。剿骄坦娥波蓟驱介径徘狙秒饿骤印佳诸粪绝治觅功谢蒂抛爸琅奉衷淀黄枝浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件二二次次动动规规|在动规的基础上再进行动规,就叫在动规的基础上再进行动规,就叫做二次动规。做

62、二次动规。|买票买票|有一座有一座n层的楼房,某个人要到第层的楼房,某个人要到第n层的任何一个房间买票。每层楼都层的任何一个房间买票。每层楼都有有m个房间。而如果要到第个房间。而如果要到第i层的第层的第j个房间买票,那么必须先在第个房间买票,那么必须先在第i-1层层的第的第j个房间买票或者在第个房间买票或者在第i层的与这层的与这个房间相邻的房间买过票才行个房间相邻的房间买过票才行.而每而每个房间所要收取的票费是不同的个房间所要收取的票费是不同的,给给定每个房间内买票需要的费用定每个房间内买票需要的费用,问要问要在第在第n层的任意一间房间内买到票的层的任意一间房间内买到票的最小消费是多少最小消费

63、是多少.戊艰羞朗害臻喝拄厦妇扮粗事天席法刹迹帜象吨剂虑圃枪兵份病惕词众诗浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件买买票票|显然不能写这样的状态转移方程显然不能写这样的状态转移方程:fi,j:=min(fi-1,j,fi,j-1,fi,j+1)+wj.因为无法有一种处理顺序因为无法有一种处理顺序使得在使得在fi,j之前同时求得之前同时求得fi,j-1和和fi,j+1的最优值的最优值.|所以动规分两次进行所以动规分两次进行.第一次用状态转移第一次用状态转移方程方程fi,j:=min(fi,j-1,fi-1,j)+wi求出一求出一个不一定是最优

64、的解个不一定是最优的解.再用再用fi,j:=min(fi,j,fi,j+1,j from m-1 downto 1)+wi求出最终的最优解求出最终的最优解,可以证可以证明这样的能够求出真正的最优解明这样的能够求出真正的最优解.|要注意的是这两次动规不能分开做要注意的是这两次动规不能分开做,而要而要在处理每一层的时候都要做在处理每一层的时候都要做,要不然显然要不然显然无法求得最优值。无法求得最优值。玉胆殆涨屏妒羚捶邪秆锤浴醇汲毫赵映沦煌凛杰撅蜜弃沈呻刊棕脂猪儒档浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件综综合合题题|网络(网络(Ural105

65、6,求树的中心)求树的中心)|题目大意是:题目大意是:有一棵有有一棵有N个结个结点的树,给出每个结点的父亲点的树,给出每个结点的父亲(即给出这棵树),边的权都(即给出这棵树),边的权都是是1。每个结点延树的边可以。每个结点延树的边可以走到树的任意一个结点,令走到树的任意一个结点,令Ai为第为第i个结点最远能走的距离,个结点最远能走的距离,求出求出Ai最小的结点有哪些。如最小的结点有哪些。如有多个最小的有多个最小的Ai,则都要输出。,则都要输出。这里这里N=10000N=10000 等窄裁法抛罪篙脑怨乎盈秀舅构蔗跳篓软锭尺豆漆香切逃三一渠嵌馅带雕浙江大学acm程序设计竞赛动态规划讲义ppt课件浙

66、江大学acm程序设计竞赛动态规划讲义ppt课件网网络络|枚举每个点,然后枚举每个点,然后DFS复杂度复杂度O(N2),超时是显然的事情。,超时是显然的事情。|可以发现其实有很多可以发现其实有很多DFS都重复做都重复做了同样的工作,产生了浪费,所以了同样的工作,产生了浪费,所以应该选择动态规划解决这个问题。应该选择动态规划解决这个问题。|树上的动规,是否直接可以写出下树上的动规,是否直接可以写出下面的状态转移方城呢?面的状态转移方城呢?|fi:=max(fson,ffather)+1 |废话,显然是不行的,废话,显然是不行的,son和和father的值不可能同时得到。的值不可能同时得到。|但是不

67、要放弃,解决这个冲突的方但是不要放弃,解决这个冲突的方法,就是采用二次动规。法,就是采用二次动规。姚拉般筐坟蛙黔暂义牌虫膊能根惶哦翠袖继芒甸匣霹捞籍闻跨犀状善檬其浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件网网络络|第一次动规做第一次动规做fi:=max(fson)+1,第二次动规做第二次动规做fi:=max(fi,ffather + 1) 。|但是存在一个问题就是如果但是存在一个问题就是如果ffather的值是从的值是从i那里得到的,这那里得到的,这样计算显然就错了。样计算显然就错了。|不要放弃,在实际操作过程中,不要放弃,在实际操作过程中

68、,f需需要记下两个值,一个是最优值,一要记下两个值,一个是最优值,一个是次优值,这两个值必须由不用个是次优值,这两个值必须由不用的子结点得到。这样当最优值发生的子结点得到。这样当最优值发生矛盾的时候,次优值一定不会矛盾。矛盾的时候,次优值一定不会矛盾。问题就解决了。复杂度问题就解决了。复杂度O(N)O(N)十分的十分的理想。理想。 毙尿即狡挂壕针烧哥僧摊崖这通雪拟抚攻烙丢新雕猛烦千剁星棒拾遮霉漂浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件总总结结|动态规划有很多东西还需要我们动态规划有很多东西还需要我们更加努力地去探索和学习更加努力地去探索和

69、学习.总体总体上说来上说来,动态规划是个既简单又动态规划是个既简单又不简单的算法不简单的算法,熟练地掌握了动熟练地掌握了动态规划态规划,也就熟练地控制了比赛也就熟练地控制了比赛.壁炯署肃息勇抡琴蹲拂灾池宋引寞历萧诺酱傅砒淳况氢役聋宁韧砰缺走盾浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件矩弟截崎絮韭统攫纳粳碾密杂醚卵圭款甚蝇粥额瞧糯搏护霹团拐囱挽触患浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件Thats all!Thank you for listening.谱租瘦郎糖那晨吴宠钮盆犁森兰憾憨鸣

70、浩蘑耕厕崎供府甭将洪庆斗秤宫吠浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件动动规规练练习习题题|垃圾陷阱(垃圾陷阱(USACO&TJU1087)|卡门卡门农夫约翰极其珍视的一条农夫约翰极其珍视的一条Holsteins奶牛奶牛已经落了到已经落了到“垃圾垃圾井井”中。中。“垃圾井垃圾井”是农夫们扔垃圾的地是农夫们扔垃圾的地方,它的深度为方,它的深度为D (2 = D = 100)英尺。卡门想把垃圾堆起来,等到堆得与英尺。卡门想把垃圾堆起来,等到堆得与井同样高时,她就能逃出井外了。另外,井同样高时,她就能逃出井外了。另外,卡门可以通过吃一些垃圾来维

71、持自己的生卡门可以通过吃一些垃圾来维持自己的生命。每个垃圾都可以用来吃或堆放,并且命。每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费卡门的时间。假设卡门堆放垃圾不用花费卡门的时间。假设卡门预先知道了每个垃圾扔下的时间预先知道了每个垃圾扔下的时间t(0 t = 1000),以及每个垃圾堆放的高度,以及每个垃圾堆放的高度h(1 = h = 25)和吃进该垃圾能维和吃进该垃圾能维持生命的时间持生命的时间f(1 = f = 30),要求,要求出卡门最早能逃出井外的时间,假设卡门出卡门最早能逃出井外的时间,假设卡门当前体内有足够持续当前体内有足够持续10小时的能量,如小时的能量,如果卡门果卡门10小时

72、内没有进食,卡门就将饿小时内没有进食,卡门就将饿死。死。 阉龙绊打律重灶局厘钡亮岩樱染敦哑脖冕配勉贯乍睡崎蹬窝孙滔撒猖冯梭浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件动动规规练练习习题题|字符串距离(字符串距离(TJU1086)|设有字符串设有字符串X,我们称在,我们称在X的头尾及中间插入任意的头尾及中间插入任意多个空格后构成的新字符串为多个空格后构成的新字符串为X的扩展串,如字的扩展串,如字符串符串X为为“abcbcd”,则字符串,则字符串“abcbcd”,“abcbcd”和和“abcbcd”都是都是X的扩的扩展串,这里展串,这里“”代表空

73、格字符。代表空格字符。 如果如果A1是字是字符串符串A的扩展串,的扩展串,B1是字符串是字符串B的扩展串,的扩展串,A1与与B1具有相同的长度,那么我们定义字符串具有相同的长度,那么我们定义字符串A1与与B1的距离为相应位置上的字符的距离总和,而两的距离为相应位置上的字符的距离总和,而两个非空格字符的距离定义为它们的个非空格字符的距离定义为它们的ASCII码的差码的差的绝对值,而空格字符与其它任意字符之间的距的绝对值,而空格字符与其它任意字符之间的距离为已知的定值离为已知的定值K,空格字符与空格字符的距离,空格字符与空格字符的距离为为O。在字符串。在字符串A、B的所有扩展串中,必定存在的所有扩

74、展串中,必定存在两个等长的扩展串两个等长的扩展串A1、B1,使得,使得A1与与B1之间之间的距离达到最小,我们将这一距离定义为字符串的距离达到最小,我们将这一距离定义为字符串A、B的距离。的距离。 请你写一个程序,求出字符串请你写一个程序,求出字符串A、B的距离。的距离。 幸温讳崔棱黎甭鞠粘强直效安豢墨尹坝爬峰抢贵曾没合侦咳绣陷题姜陵稻浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件动动规规练练习习题题|二叉苹果树(二叉苹果树(Ural1018Ural1018)|有一棵苹果树,如果树枝有分叉,一定是有一棵苹果树,如果树枝有分叉,一定是分分2 2叉

75、(就是说没有只有叉(就是说没有只有1 1个儿子的结点)个儿子的结点)这棵树共有这棵树共有N N个结点(叶子点或者树枝分个结点(叶子点或者树枝分叉点),编号为叉点),编号为1-N,1-N,树根编号一定是树根编号一定是1 1。我们用一根树枝两端连接的结点的编号来我们用一根树枝两端连接的结点的编号来描述一根树枝的位置。下面是一颗有描述一根树枝的位置。下面是一颗有4 4个个树枝的树树枝的树2 52 5 / / 3 4 3 4 / / 1 1现在这颗树枝条太多了,需要剪枝。但是现在这颗树枝条太多了,需要剪枝。但是一些树枝上长有苹果。一些树枝上长有苹果。给定需要保留的树枝数量,求出最多能留给定需要保留的树

76、枝数量,求出最多能留住多少苹果。住多少苹果。咽拖肖汲雀敞呼棋针裤躺都汪认课邮唾肠喷术某姓摄款促掇可乔菏硒理协浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件动动规规练练习习题题|最最长前前缀 IOI96&USACO 1.4.3)|在生物学中,一些生物的在生物学中,一些生物的结构是用包含其构是用包含其要素的大写字母序列来表示的。生物学家要素的大写字母序列来表示的。生物学家对于把于把长的序列分解成的序列分解成较短的(称之短的(称之为元元素的)序列很感素的)序列很感兴趣。如果一个集合趣。如果一个集合 P 中的元素可以通中的元素可以通过串串联组成一个序列

77、成一个序列 S ,那么我,那么我们认为序列序列 S 可以分解可以分解为 P 中中的元素。并不是所有的元素都必的元素。并不是所有的元素都必须出出现。举个例子,序列个例子,序列 ABABACABAAB 可以可以分解分解为下面集合中的元素:下面集合中的元素: A, AB, BA, CA, BBC 序列序列 S 的前面的前面 K 个字符称作个字符称作 S 中中长度度为 K 的前的前缀。设计一个程序,一个程序,输入一个元素集合以及一个大写字母序列,入一个元素集合以及一个大写字母序列,计算算这个序列最个序列最长的前的前缀的的长度。度。 据竭涎繁聪秆哨圣碾娟挤簿班溪版免苦庚句辟例捧供线毋儡粒鞋牵尸通放浙江大

78、学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件动动规规练练习习题题|祝福(祝福(TJU1078)|得知得知Atlantis即将沉没的消息以后,即将沉没的消息以后,King决定决定把他的人民送到安全的国外去。但是码头已经废把他的人民送到安全的国外去。但是码头已经废弃很多很多年了。码头前有一个迷宫,国王的骑弃很多很多年了。码头前有一个迷宫,国王的骑士只身闯入了这个迷宫士只身闯入了这个迷宫 骑士在迷宫的出口遇骑士在迷宫的出口遇到了不明生物的袭击!骑士因为是单独作战,所到了不明生物的袭击!骑士因为是单独作战,所以很快便招架不住了,他的大马被打得奄奄一息以很快

79、便招架不住了,他的大马被打得奄奄一息(。)这个时候,迷宫中的两座石像(。)这个时候,迷宫中的两座石像(一个是一个是猫老大,一个是天使。(!猫老大,一个是天使。(!)里放出了里放出了无数锋利的刀片,把不明生物全部杀死,骑士当无数锋利的刀片,把不明生物全部杀死,骑士当场晕倒在地。等他醒来,发现马已经死了,手上场晕倒在地。等他醒来,发现马已经死了,手上多了一个戒指,上面写着:多了一个戒指,上面写着: “这个戒指会帮助你这个戒指会帮助你逃脱。它赋予了神奇的力量。有了它,每次移动逃脱。它赋予了神奇的力量。有了它,每次移动如果是只要如果是只要|x-x1|+|y-y1| (x1, y1)的移动!的移动!”(Angel暗自想:还暗自想:还有这么心黑的有这么心黑的)迷宫为迷宫为n*m的矩阵。骑士从的矩阵。骑士从(n, m)到到(1, 1)。问:在戒指的帮助下,骑士最。问:在戒指的帮助下,骑士最少要多少步才能回到入口?在步数最少的前提下,少要多少步才能回到入口?在步数最少的前提下,总共有多少种办法到达入口?注意,骑士不会傻总共有多少种办法到达入口?注意,骑士不会傻到一直停留在原地不动。到一直停留在原地不动。 日喷洁扳估骤黎彦埋蛾丫潭隆草氏氖爪卢身镣晶宦饮瞅怖爬慎被呀豢扰辩浙江大学acm程序设计竞赛动态规划讲义ppt课件浙江大学acm程序设计竞赛动态规划讲义ppt课件

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号