算法艺术与信息学竞赛配套课件-动态规划.ppt
《算法艺术与信息学竞赛配套课件-动态规划.ppt》由会员分享,可在线阅读,更多相关《算法艺术与信息学竞赛配套课件-动态规划.ppt(102页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、算法艺术与信息学竞赛45道动态规划题目刘汝佳索引【POJ1141】括号序列【POJ1191】棋盘分割【SPOJ196】决斗【AOA】跳舞机【AOA】积木游戏【AOA】艺术馆的火灾【AOA】机器人的名字【UVa10559】方块消除索引【AOA】公路巡逻【POJ1074】并行期望值【AOA】高性能计算机【AOA】模板匹配【AOA】不可解码的编码【AOA】青蛙的烦恼【AOA】排列问题【AOA】最优排序二叉树索引【POJ1038】Bugs公司【UVa10531】迷宫统计【AOA】贪吃的九头龙【AOA】快乐的蜜月【AOA】移动机器人【UVa10271】佳佳的筷子【AOA】偷懒的工人【AOA】铁路调度索引
2、【POJ1691】平板涂色【POJ1947】道路重建【ZJUxxx】圆和多边形【AOA】铁球落地【UVA10118】免费糖果【AOA】丢三落四的老鼠【AOA】最长公共子序列问题【UVA10635】排列的LCS问题索引【UVAxxx】最长上升子序列问题【UVAxxx】最优二分检索树问题【POJ1180】任务调度问题【AOA】序列分割问题【AOA】多排列的LCS【POJ1159】回文词【AOA】友好城市【POJ1160】邮局索引【AOA】基因串【POJ1946】奶牛转圈【AOA】元件折叠【AOA】DNA序列【AOA】最优布车方案括号序列定义如下规则序列(字符串):空序列是规则序列;如果S是规则序列
3、,那么(S)和S也是规则序列;如果A和B都是规则序列,那么AB也是规则序列。例如,下面的字符串都是规则序列:(),(),(),(),()()这几个则不是规则序列:(,)(,()现在,给出一些由(,),构成的序列,请添加尽量少的括号,得到一个规则序列。分析di,j:子串ij最少需要添加的括号数状态转移S形如(S)或者S:di+1,j-1S形如(S或者S:di+1,j+1S形如S)或者S:di,j-1+1长度大于1:di,k+dk+1,j(i=k=j-1)状态O(n2),转移O(n),共(n3)棋盘分割将一个88的棋盘进行如图所示的分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分
4、继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n(n15)块矩形棋盘(每次切割都只能沿着棋盘格子的边进行)。棋盘分割原棋盘上每一格有一个分值,一块矩形棋盘的总分为其所含各格分值之和。现在需要把棋盘按上述规则分割成n块矩形棋盘,并使各矩形棋盘总分的均方差均方差最小。分析变形均方差公式平均值是一定的(等于所有方格里的数的和除以n)只需要让每个矩形总分的平方和尽量小分析考虑左上角坐标为(x1,y1),右下角坐标为(x2,y2)的棋盘,设它把切割k次以后得到的k+1块矩形的总分平方和最小值为dk,x1,y1,x2,y2状态转移:沿着某某横线切或者竖线切,然后选一块选一块继续切,如横着
5、切的两类决策是dk-1,x1,y1,a,y2+sa+1,y1,x2,y2dk-1,a+1,y1,x2,y2+sx1,y1,a,y2 其中x1=a=x2分析状态dk,x1,y1,x2,y2设m为棋盘边长,则状态数目为m4n,决策数目为O(m)转移时间取决于计算sx1,y1,x2,y2的时间预处理先用O(m2)时间算出左上角为(1,1)的所有矩阵元素和,这样状态转移时间就是O(1),总的时间复杂度为O(m5n)决斗编号为1n的n个人按逆时针方向排成一圈圈,他们要决斗n-1场。每场比赛在某相邻两人间进行,败者退出圈子,紧靠败者右边的人成为与胜者直接相邻的人。任意两人之间决斗的胜负都将在一矩阵中给出(
6、如果Ai,j=1则i与j决斗i总是赢,如果Ai,j=0则i与j决斗时i总是输),求出所有可能可能赢得整场决斗的人的序号分析di,j表示是否有可能i和j相遇,则第i个人能取得最后的胜利当且仅当di,i为true状态转移:考虑相遇前的最后一步,则dI,j为true当且仅当能找到一个k,使得i能遇k,k能遇到j,且i或者j能打败k状态有O(n2)个,转移有O(n)个,共O(n3)跳舞机DDR的主要内容是用脚来踩踏板。踏板有4个方向的箭头,用1,2,3,4来代表每首歌曲有一个箭头序列,游戏者必须按照这个序列依次用某一只脚踩相应的踏板。在任何时候,两只脚都不能在同一个踏板上,但可以同时待在中心位置0。跳
7、舞机每一个时刻,必须移动而且只能移动一只脚去踩相应的箭头,另一只脚不许移动。跳DDR会消耗体力。从中心移动到任何一个箭头耗费2单位体力,从任何一个箭头移动到相邻箭头耗费3单位体力,移动到相对的箭头(1和3相对,2和4相对)耗费4单位体力,而留在原地再踩一下只需要1单位。给定一首舞曲,每个箭头应该用哪只脚踩才能使体力消耗最少呢?例如对于序列LLUR,用LLRR脚去踩,总的体力耗费为2+1+2+3=8单位分析目前左脚在位置x,右脚在位置y,从第k个箭头开始跳,最少体力耗费为dx,y,k,则用左脚,dak,y,k+1+effort(x,ak)用右脚,dx,ak,k+1+effort(y,ak)状态是
8、O(n)的,决策是O(1)的,总时间复杂度为O(n)积木游戏有N块编号依次为1,2,N的长方体积木。每块积木有三条不同边分别称为a、b、c边从积木中选出若干块分成M堆,每堆至少有1块积木,并且第K堆中任意一块积木的编号要大于第K+1堆中任意一块积木的编号积木游戏每一堆积木要垂直摞成一根柱子,并满足除最顶上的一块积木外,任意一块积木的上表面同且仅同另一块积木的下表面接触,并且要求下面积木的上表面能包含上面的积木的下表面,也就是说,要求下面积木的上表面两对边的长度分别大于等于上面积木两对边的长度。对于任意两块上下表面相接触的积木,下面积木的编号要小于上面积木的编号要求每堆积木的高度和尽量大 分析我
9、们从最后一堆积木开始,一个个积木考虑记di,a,b,k为已经用了前a个积木得到了i根柱子,目前顶面为积木b的第k个面,以后还能获得的最大高度,有三类决策新起一堆,di+1,a+1,a+1,k,当im时合法加在当前堆,di,a+1,a+1,k,当放得上时合法丢弃当前块,di,a+1,b,k,随时合法状态O(n2m)个,决策O(1),总时间O(n2m)艺术馆的火灾艺术馆着火了.这是一幢两层的小楼,每层有N个房间,用两个数分别表示艺术品价值和火势.灭火器最多只能发射K次,每次发射将覆盖一个矩形的区域(矩形的高度可以是1也可以是2),所到之处不但火焰会被扑灭,艺术品也被摧毁。你需要决定灭火器每次应该怎
10、样发射,才能将这次火灾的损失降到最低限度。损失等于摧毁的艺术品总价值加上剩余的火势总值分析模型:在一个2N的矩阵中,找出K个子矩阵。矩阵的每个元素有两个值V和F。题目要让K个子矩阵的V值和其他矩阵的F值之和最小,而如果我们令W=V-F,则目标转换为让K个子矩阵元素的W值之和最小 矩阵可以重叠,这给解题带来不便。我们可以不考虑重叠情况,如图所示分析用区域(i,j)来表示“第一行第i个格子右边所有元素加上第二行第j个格子右边的所有元素”这个区域,用ds,i,j来表示在这个区域中选择s个子矩阵,它们的元素总和的最小值状态转移的决策是新矩形的放置,有三类第一行第i个格子不用,ds,i+1,j在第一行从
11、第i个格子开始放矩形,设长度为L,转移到ds-1,i+L,ji=j时还可放置宽度为2的矩形,转移到ds-1,i+L,j+L状态O(kn2)个,决策O(n),转移时间O(1)(先预处理),总时间O(kn3)机器人的名字考虑一种基于重复子串的压缩方法用Stk表示k个相同的子串St(其中St称为重复子串,k是一个单字节整数,只占一个字符位置)如果这k个子串并没有连在一起,则可以在Stk的后面加上S1t1S2 t2Sr tr(1tik,titi+1),表示在第ti个St的后面放置Si,Si称为插入子串St和Si也都可以是压缩后的字符串比如I_am_WhatWhat_is_WhatWhat的压缩结果为I
12、_am_What4_is_2,长度为19(例子中的空格用下划线“_”表示,数字2和4实际上是用单字节二进制表示的)名字不会以空格开始或结尾,大小写敏感分析令da,b表示以a,b为起止位置的串(记为Sa,b)的最短压缩长度,则目标为d1,L状态转移连接:da,b=minda,i+di+1,b,a=ib压缩:需要确定重复子串.当重复子串很多时,决策枚举的代价较大压缩决策可以通过动态规划来枚举!分析ga,b,c表示将串Sa,b,选择长度为c的重复子串进行压缩得到的最短长度.枚举插入串(可能为空)的下一个位置i,状态转移方程为分析边界条件da,b的状态转移方程如何较快的判断是否有Sa,a+c-1=Si
13、,i+c-1?从c=1开始递推,总O(L3)分析时间:预处理O(L3),核心O(L4),共O(L4)空间g:本来是三维的O(L3)的,但注意到在每个式子里b参量没有发生变化,故以b为阶段递推,只需要O(L2)的空间预处理结果:如果用ha,b,c表示是否有Sa,a+c-1=Sb,b+c-1,则又是三维的.可以用链式存储,用nexta,b表示子串Sa,b的下一个相同子串的开始位置,则只需要O(L2)的空间方块消除n个带颜色方格排成一列,相同颜色的方块连成一个区域(如果两个相邻方块颜色相同,则这两个方块属于同一区域)游戏时,你可以任选一个区域消去。设这个区域包含的方块数为x,则将得到x2分方块消去之
14、后将产生空列,此时其右边的所有方块就会向左移,直到所有方格连在一起方块消除下面是一个游戏的例子分析输入表示成两个长度为L的数组color和lenL表示有多少“段”不同的颜色方块colori表示第i段的颜色leni表示第i段的方块长度题目的例子成color=1,2,3,1,len=1,4,3,1用(i,j,k)表示在第ij段方块的右边添加k个颜色为colorj的方块后得到的方块序列,相当于考虑第ij段,但让lenj的值增加k分析d i,j,k表示把序列(i,j,k)消除的最大得分考虑最后一段,有两类决策如果马上消掉,就是di,j-1,0+(lenj+k)2;如果和前面的若干段一起消,设这“若干段
15、”中最后面的那一段是p(i=pj),得分为di,p,k+lenj+dp+1,j-1,0,其中colorp=colorj边界条件是f i,i-1,0=0时间O(n4),建议用记忆化递归实现 公路巡逻在一条没有分岔的公路上有n(n50)个关口,相邻两关口之间的距离是10km。所有车辆在公路上的最低速度为60km/h,最高速度为120km/h,且只能在关口处改变速度。有m(m300)辆巡逻车分别在时刻Ti从第ni个关口出发,匀速行驶到达第ni+1个关口,路上耗费时间为ti(s)。两辆车相遇指他们之间发生超车现象或同时到达某个关口。求一辆于6点整从第1个关口出发去第n个关口的车最少会与多少辆巡逻车相遇
16、,以及在此情况下到达第n个关口的最早时刻。所有车辆到达关口的时刻必须是整秒。分析di,T表示在时刻T到达第i个关口的途中与巡逻车最少相遇次数,状态转移方程为函数wi-1,T-t,T是目标车于时刻T-t从第i-1个关口出发,于时刻T到达第i个关口途中与巡逻车相遇的次数设每两个关口间行驶时间有k种选择,状态总数为O(kn2),决策数目为O(k),转移时间依赖于w分析方法一:方法一:在每个决策中都进行一次计算,对所有从第i个关口出发的巡逻车进行判断,由于每辆巡逻车恰好被判断一次,故这样每个状态的计算w的平均时间复杂度为O(m/n),算法总时间复杂度为O(kn2)O(k)O(m/n)=O(k2nm)。
17、方法二:方法二:仔细观察状态转移方程可以发现,在对状态di,T进行转移时,所计算的函数w都是从第i个关口出发的,而且出发时刻都是T,只是相应的到达时刻不同。能否考虑这些车之间的联系,从而利用已经得出的结果,减少重复运算呢?分析令gk=wi,T,k+1-wi,T,k,设到达时间为k和k+1的目标车分别为车A和车B对于每辆从第i个关口出发的巡逻车C,设其出发和到达时刻分别为St和Tt,则Ttk+1,车A车B与车C的相遇情况相同Tt=k,则车A与车C相遇,车B的分析又分为,若St=T,则车B不与车C相遇,否则车B也与车C相遇Tt=k+1,则车B与车C相遇,对车A的分析又分为,若St=T,则车A不与车
18、C相遇,否则车A也与车C相遇分析综合起来gk=G(Tt=k+1)&(St=T)G(Tt=k)&(St=T)G(P)表示所有从关口i出发且满足条件P的巡逻车数目计算di,T时先对所有从第i个关口出发的巡逻车进行一次扫描,求出wi,T,T+300的同时求出gT+301.T+600,时间复杂度为O(m/n)以后的转移中,由wi,T,k+1=wi,T,k+gk,仅需O(1)时间就可以求出函数值w,状态转移时间仅为O(1)总时间O(kn2)*(O(m/n)+k*O(1)=O(knm+k2n2)由于n50,m300,方法二比方法一快得多并行期望值考虑一个可以并行执行两个高级语言程序的机器。高级语言程序由若
19、干条赋值指令组成,形式是::=op 变量名由不超过20个字母组成。运算数是变量名或小于100的正整数。op是运算符,可以是加号“+”或者减号“-”执行前,程序被翻译成机器语言。X:=Y+Z翻译成Mov R1,YMov R2,ZAdd R1,R2Mov X,R1Mov指令把第二个操作数送到第一个中去,Add操作进行加法,并把结果保存在第一个操作数中。注意Y和Z代表变量或者整数常量。X:=Y-Z 的机器语言代码类似并行期望值处理器接受了两个机器语言程序后,每次随机选一个程序,执行它的下一条指令。如果某个程序执行完毕,处理器会连续把另一个程序执行完。两个程序共享所有变量(一开始的时候各个变量的值均为
20、0),但拥有两个独立的寄存器R1和R2由于执行顺序不确定,最后各个变量的值也是不确定的。不过,可以计算出每个变量在所有情况下最终值的平均数(即并行期望值)。现在给你两个高级语言程序,请编程算出所有变量的并行期望值。每个高级语言程序最多有25条指令,两个程序最多共使用10个变量。分析首先把高级语言程序翻译成机器语言,翻译规则:=+:=+:=op :=+其中x是程序代号.即一共有四个寄存器:R11,R12,R21,R22,和普通变量同等对待dx,y,k表示程序1执行完x条指令,程序2执行完y条指令后变量k的并行期望值分析情况一:刚刚执行完第1个程序的第x条指令该指令不是在给k赋值,等于dx-1,y
21、,k指令形如:=op,等于dx-1,y,a op dx-1,y,b记这个结果为K1情况二:刚刚执行完的是第2个程序的第y条指令,按同样的方法可计算出K2情况一的概率是x/(x+y),情况二是y/(x+y)按期望公式,dx,y,k=(x*K1+y*K2)/(x+y)分析为什么在情况一的赋值语句后,k的期望等于dx-1,y,a op dx-1,y,b?期望的线性性质为什么情况一的概率是x/(x+y),情况二是y/(x+y)?状态(x-1,y)和(x,y-1)的概率比为到达两个状态的路径条数比,即C(x+y-1,x-1)/C(x+y-1,y-1),展开得(x+y-1)!/(x-1)!y!/(x+y-
22、1)!/x!(y-1)!=x/y高性能计算机一个大型计算任务可以划分成很多A类任务和B类任务.所有A类任务都相同,所有B类任务都相同.所有任务的相对执行顺序没有要求有p个计算结点,对于第i个结点三种工作状态:待机、A类和B类。初始为待机状态,从其他的状态转入A或B状态分别需要tiA和tiB的时间连续处理x个A类子任务,时间为t=kiAx2;类似定义kiB你需要进行任务分配,即给每个结点设置任务队列.队列中一串连续的同类子任务不能被分成两部分执行。所有结点都同时开始运行,目标是最后结束计算的结点的完成时间尽可能早分析该问题可以分成两个子问题:计算第i个结点完成ai个A任务和bi个B任务的最短时间
23、给第i个结点分配ai个A任务和bi个B任务,取所有结点运行时间的最大值问题1的解决:让di,t,a,b表示结点i,还有a种A任务和b种B任务,并且当前需要执行t类任务(t=A或B)所需要的最短时间分析决策为当前执行j个连续序列,di,A,a,b=mindi,B,a-j,b+tiA+kiA*j2问题1的解fi,a,b=mindi,A,a,b,di,B,a,b问题2是任务分配问题.gi,a,b代表前i个结点完成a个A任务b个B任务的最短时间,决策为给任务i分配j个A任务和k个B任务,即gI,a,b=min maxdi-1,a-j,b-k,fi,j,k 时间O(pna2nb2),空间O(nanb),
24、如何优化?模板匹配*代表零个或多个字符。通配符Q称两个通配符P1和P2的公共模板,如果被Q匹配的字符串一定同时被二者匹配。如ba*ab是*ab*和ba*b的公共模板P1、P2的一个模板集合Q1,Q2,Qn称为完备的,如果每个Qi都是P1、P2的公共模板,且任何一个既能被P1匹配又能被P2匹配的字符串至少能被一个Qi匹配给出P1,P2,求模板数目最少的完备模板集合例如,对于ba*ab和*ab*,一个包含最少数目模板的完备集合为:ba*ab*b,bab*b,ba*ab,bab 分析如果把一个模板看作一个集合(即它能匹配到所有字符串集合),则模板包含关系等同于集合包含关系本题的任务是求P1和P2的交
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 艺术 信息学 竞赛 配套 课件 动态 规划
限制150内