提高组_动态规划.pptVIP

  1. 1、本文档共40页,可阅读全部内容。
  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文档。上传文档
查看更多
提高组_动态规划

动态规划题目选 刘汝佳 例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)个人进行剪刀石头布游戏, 每次每人等概率的出剪刀石头或者布, 直到一共只出现两种(否则重来一次,计入局数), 然后分别在内部继续. 两部分的局数都计入总局数. 求游戏总局数的期望 分析 先计算某一局内a人出石头b人出剪刀的概率P(a,b)=(P(a-1,b)+P(a,b-1))/3 则一局不重来的概率为Pn=sum{3P(i,n-i)} 设fn为所求, 则 fn=(1-Pn)*(1+fn)+sum{3P(i,n-i)*(1+fi+fn-i)} 移项得到递推公式 例3. Collector 你想收集所有硬币. 最少需要取多少钱, 使得不管取款机怎么给钱都可以得到所有种类硬币? 例如{1,2}和{1,1}都是无解的. 但{2,3}的解是5, 因为只有一种方案5=2+3 最多50种硬币, 每个硬币面值为1到10000 分析 何时无解? 存在倍数的情况? 不一定. 例如{3,5,8}. 无解当且仅当有两种不同的方式得到所有硬币面值和sum. f(i,j)表示用前i种硬币得到j的方法总数 例3. 旅行计划 某人沿高速公路旅行,白天行走,晚上在旅馆住宿,每天最多走800公里。旅行社给出了沿路旅馆的相关信息,包括离出发点的距离和该旅馆的价格. 任意两个旅馆之间的距离都将在800公里以内. 求出 住宿费用最少的旅行计划 冲突:日程最短 住宿次数最少的旅行计划 冲突: 费用最少 分析 设d[i]为到旅馆i的最少费用,则有d[i]=min{d[j]}+cost[i],ji, dist(j,i)=800 算法一: 直接计算, 时间O(n2). 如果可以快速计算一段连续区间的最小值, 则时间复杂度将得到降低! 算法二: 用滑动窗口技术,用堆保存满足dist(j,i)=L=800的状态d[j],每个元素最多删除和增加一次,共O(nlogL) 分析 对窗口内的点, 如果有ij但d[i]d[j]则可以只保留d[j], 因为d[j]更好且i能取时j一定也能取 在新加入结点时从右往左查找, 找到位置前把结点删除, 直到找到正确的位置 每个点最多加入和删除一次,因此为O(n) 例4. 基因 字符串变换规则A1A2A3, 其中A1, A2, A3各为一个大写字母,表示字母A1可以被替换为串A2A3. 给定串, 判断它是否可以由字母S经过若干次替换生成. 分析 逆向思维:A[i,j,c]为真当且仅当i…j-1的子串可以合成字母c。 递推时可枚举k,对于规则A1A2A3 如果A[i,k,A2]且A[k,j,A3] ,则A[i,j,A1] 即A[i,j,A1] ||= A[i,k,A2] A[k,j,A3] 状态有26L2个,转移有262L个,总263L3。 B[i,j]为i…j的子串最少可以合成几个S,O(n2) 特殊处理:用整数表示c1c2能直接合成的集合e[c1,c2],用位运算加速 例5. n-k special sets 我们说一个由自然数构成的集合X是n-k特殊集合,如果它满足 对于集合X中的每个元素x,有1=x=n, 集合X中所有元素的和大于k 集合X中不包含任意一对相邻的自然数 给出n, k,求n-k特殊集合有多少个 分析 d[i,j]为i-j特殊集的个数,则分两类 不包含i的,为d[i-1,j] 包含i的,为d[i-2,j-i] 注意边界 滚动数组 例6. Lecture Halls Reservation 有一个演讲大厅需要我们管理,演讲者们事先定好了需要演讲的起始时间和中止时间。我们想让演讲大厅得到最大可能的使用。我们要接受一些预定而拒绝其他的预定,目标是使演讲者使用大厅的时间最长。假设在某一时刻一个演讲结束,另一个演讲就可以立即开始。 分析 按照结束时间从小到大排序 d[i] = max{d[j]} + Len[i],其中j为右端点在i左端点前的线段集合。显然该集合是连续的若干个线段 用堆维护d[j],O(nlogn)。由于需要排序,这是下界。如果已经按右端点排序好,则需要二分找到可用线段的最右端,再插入状态 例7. 氧气瓶 用(a,b,c)描述一个氧气瓶,其中a表示氧气体积,b为氮气体积,c为重量

文档评论(0)

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

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

1亿VIP精品文档

相关文档