提高组动态规划课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《提高组动态规划课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 提高 动态 规划 课件
- 资源描述:
-
1、例1.ProbabilisticTranslator 你要翻译一篇文章,每个原文单词都有若干候选翻译词汇.要求翻译后相邻单词的权和尽量大.例如 原文是a b c 翻译选项为:a:x y;b:y z;c:x y 权为w(y,z)=20,w(x,y)=10,w(z,x)=5 则翻译成x y z权和为10+20=30 原文最多50个单词.最多50个单词对权非0分析 令f(k,t)为前k个单词的翻译结果中,其中最后一个单词采取第t种翻译,得到的最大权和例2.RPSChamps n(n=500)个人进行剪刀石头布游戏,每次每人等概率的出剪刀石头或者布,直到一共只出现两种(否则重来一次,计入局数),然后分
2、别在内部继续.两部分的局数都计入总局数.求游戏总局数的期望分析 先计算某一局内a人出石头b人出剪刀的概率P(a,b)=(P(a-1,b)+P(a,b-1)/3 则一局不重来的概率为Pn=sum3P(i,n-i)设fn为所求,则fn=(1-Pn)*(1+fn)+sum3P(i,n-i)*(1+fi+fn-i)移项得到递推公式例3.Collector 你想收集所有硬币.最少需要取多少钱,使得不管取款机怎么给钱都可以得到所有种类硬币?例如1,2和1,1都是无解的.但2,3的解是5,因为只有一种方案5=2+3 最多50种硬币,每个硬币面值为1到10000分析 何时无解?存在倍数的情况?不一定.例如3,
3、5,8.无解当且仅当有两种不同的方式得到所有硬币面值和sum.f(i,j)表示用前i种硬币得到j的方法总数例3.旅行计划 某人沿高速公路旅行,白天行走,晚上在旅馆住宿,每天最多走800公里。旅行社给出了沿路旅馆的相关信息,包括离出发点的距离和该旅馆的价格.任意两个旅馆之间的距离都将在800公里以内.求出住宿费用最少的旅行计划 冲突:日程最短住宿次数最少的旅行计划 冲突:费用最少分析 设di为到旅馆i的最少费用,则有di=mindj+costi,ji,dist(j,i)=800 算法一算法一:直接计算,时间O(n2).如果可以快速计算一段连续区间的最小值,则时间复杂度将得到降低!算法二算法二:用
4、滑动窗口技术,用堆保存满足满足dist(j,i)=L=800的状态的状态dj,每个元素最多删除和增加一次,共O(nlogL)分析 对窗口内的点,如果有idj则可以只保留dj,因为因为dj更好且更好且i能取时能取时j一定也能取一定也能取 在新加入结点时从右往左查找,找到位置前把结点删除,直到找到正确的位置 每个点最多加入和删除一次,因此为O(n)例4.基因 字符串变换规则A1A2A3,其中A1,A2,A3各为一个大写字母,表示字母A1可以被替换为串A2A3.给定串,判断它是否可以由字母S经过若干次替换生成.分析 逆向思维:Ai,j,c为真当且仅当ij-1的子串可以合成字母c。递推时可枚举k,对于
5、规则A1A2A3 如果Ai,k,A2且Ak,j,A3,则Ai,j,A1 即Ai,j,A1|=Ai,k,A2&Ak,j,A3 状态有26L2个,转移有262L个,总263L3。Bi,j为ij的子串最少可以合成几个S,O(n2)特殊处理:用整数表示c1c2能直接合成的集合ec1,c2,用位运算加速例5.n-k special sets 我们说一个由自然数构成的集合X是n-k特殊集合,如果它满足 对于集合X中的每个元素x,有1=x=n,集合X中所有元素的和大于k 集合X中不包含任意一对相邻的自然数 给出n,k,求n-k特殊集合有多少个分析 di,j为i-j特殊集的个数,则分两类 不包含i的,为di-
6、1,j 包含i的,为di-2,j-i 注意边界 滚动数组例6.Lecture Halls Reservation 有一个演讲大厅需要我们管理,演讲者们事先定好了需要演讲的起始时间和中止时间。我们想让演讲大厅得到最大可能的使用。我们要接受一些预定而拒绝其他的预定,目标是使演讲者使用大厅的时间最长。假设在某一时刻一个演讲结束,另一个演讲就可以立即开始。分析 按照结束时间从小到大排序 di=maxdj+Leni,其中j为右端点在i左端点前的线段集合。显然该集合是连续的若干个线段 用堆维护dj,O(nlogn)。由于需要排序,这是下界。如果已经按右端点排序好,则需要二分找到可用线段的最右端,再插入状态
7、例7.氧气瓶 用(a,b,c)描述一个氧气瓶,其中a表示氧气体积,b为氮气体积,c为重量 带多个氧气瓶,则三者都相加 给出n种氧气瓶,选择其中的一些,使得氧气至少T升,氮气至少A升,重量最轻分析 Di,j,k为只考虑前i个氧气瓶,需要氧气至少j升,氮气至少为k升的最小重量。时间复杂度:O(n*T*A)例8.CoolNumbers 如果一个数的二进制表达式(不含前导0)中至少有三个连续0或者三个连续1,我们称它为cool number.例如8=(1000)2,15=(1111)2都是cool number,但27=(11011)2不是 求a到b中的cool number个数.例如0到16有5个c
8、ool number:7,8,14,15,16;17到100有49个.0=a=b=2147483647分析 记f(x)为0到x的cool number个数,则答案为f(b)-f(a-1)集合分解:0,1011010)的数分为以下几部分:0*100*1010*101100*问题转化为求已知前缀的串个数分析 如果肯定cool了,则直接得到结果 否则只需要考虑最后的连续数字.设f(i,j,k)为包含i位且最后有j个连续的k(k=0,1)时的cool number个数,递推即可例9.Code 给定包含前K个字母的BST,代码为:空树(包含零个字母)的代码为空串.否则第一个字母为根,接着是左子树代码,最
展开阅读全文