动态规划及其应用{二}.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态规划及其应用{二}

动态规划及其应用(二) 清华大学 杨志灿 动态规划术语 阶段 把所求解问题的过程恰当地分成若干个相互联系的阶段,以便于求解 状态 状态表示每个阶段开始面临的自然状况或客观条件 决策(转移) 一个阶段的状态给定以后,从该状态演变到下一阶段某个状态的一种选择(行动)称为决策。 边界 转移过程中的初始情况 策略 由每个阶段的决策组成的序列称为策略。对于每一个实际的多阶段决策过程,可选取的策略有一定的范围限制,这个范围称为允许策略集合。允许策略集合中达到最优效果的策略称为最优策略。 动态规划 Dynamic Programming 求解决策过程最优化的数学方法 适用条件 最优化原理(最优子结构性质) 无后效性 子问题的重叠性 范围 因同样有状态、转移方程、无后效性等性质,故将递推等类型也纳入DP之下 如计算方案数、期望值 拦截导弹 第一问 求LIS(最长上升子序列) 第二问 数列最少能拆成几个上升子序列 NOIP 1999 senior p1 拦截导弹 求LIS(最长上升子序列) 普通DP:O(n^2) 二分/数据结构+DP:O(nlogn) 数列最少能拆成几个上升子序列 贪心 每次用“最经济”的系统去打导弹 模拟:O(n^2) 数据结构:O(nlogn) 合唱队形 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。  合唱队形 设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK。 则他们的身高满足T1...TiTi+1…TK(1=i=K)。 已知所有N位同学的身高,最少需要几位同学出列,可以使得剩下的同学排成合唱队形。 2 = n = 100, 130 = Ti = 230 NOIP 2004 senior p2 合唱队形 一个上升序列接一个下降序列? 枚举最高点 两端DP f[i]为[1, i]中以第i个人作为终点的最长上升子序列 g[i]为[i, n]中以第i个人作为起点的最长下降子序列 ans = max { f[i] + g[i] } - 1; i∈[1, n] 时间复杂度 普通DP:O(n^2) 二分/数据结构+DP:O(nlogn) 金明的预算方案 n元钱买物品。物品分为主件和附件两种,每个主件可以有0个、1个或2个附件,附件不会再有附件。购买附件必须先购买对应的主件。 每件物品有价值和重要度,最大化购买物品的重要度之和 n = 3200, 物品个数m = 60 NOIP 2006 senior p2 金明的预算方案 分组背包 将主件和其对应的附件看作一组物品 至多4种情况: 仅主件 主件 + 附件1 主件 + 附件2 主件 + 附件1 + 附件2 时间复杂度 O(n*m) 花匠 栋栋的花的高度可以看成一列整数h1 h2, …, hn。  设当一部分花被移走后,剩下的花的高度依次为g1, g2, … , g𝑚 ,则栋栋希望下面两个条件中至少有一个满足: 条件 A:对于所有的i,g2𝑖   g2𝑖 −1,且g2𝑖   g2𝑖 +1; 条件 B:对于所有的i,g2𝑖   g2𝑖 −1,且g2𝑖 g2𝑖 +1。 请问,栋栋最多能将多少株花留在原地 1 = n = 100,000, 0 = hi = 1,000,000 NOIP 2013 senior day2 p2 花匠 朴素DP f[i][0]/f[i][1]分别表示以第i株花作为末尾最高/低点的最优解 if (h[i] h[j]) f[i][0] = max(f[i][0], f[j][1] + 1); else f[i][1] = max(f[i][1], f[j][0] + 1); O(n^2) 用线段树/树状数组加速转移 O(nlogn) 计算拐点个数 O(n) 乌龟棋 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数)。棋盘第1格是唯一的起点,第N格是终点。 乌龟棋有M张爬行卡片,分成4种不同的类型。 每种类型的卡片上分别标有1、2、3、4四个数字之一,表示使用这种卡片后,乌龟棋子将向前爬行相应的格子数。 游戏中,玩家每次需要从所有的爬行卡片中选择一张之前没有使用过的爬行卡片,控制乌龟棋子前进相应的格子数。 游戏中,乌龟棋子自动获得起点格子的分数,并且在后续的爬行中每到达一个格子,就得到该格子相应的分数。 求小明最多能得到多少分 N = 350, M = 120 NOIP2010 senior p2 乌龟棋 F[n][i1][i2][i3][i4]? 状态数:O(n*30^4) F[n][i1][i2][i3]? 第四种卡片使用数量可以通过格子数和另外三种卡片使用数量计算得出 状态数:O(n*30^3) F[i1][i2][i3][i4] 格子数可以通过已使用的四种卡片数量计

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档