已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
动态规划 1 基础模型 戴一桥电信2011级QQ75634949 前言 动态规划是信息学竞赛中选手必须熟练掌握的一种算法 他以其多元性广受出题者的喜爱 基本模型 多阶段过程的最优化问题 使用动态规划的条件 最优化原理无后效性子问题的重叠性 给你一个数字三角形 形式如下 12345678910找出从第一层到最后一层的一条路 使得所经过的权值之和最小或者最大 搜索 2 n怎么办 动态规划 F i j max f i 1 j 1 f i 1 j a i j 三条件 最优化原理 一个最优化策略的子策略总是最优的 无后效性 对于某个给定的阶段状态 它以前各阶段的状态无法直接影响它未来的决策 而只能通过当前的这个状态 子问题的重叠性 动态规划将原来具有指数级时间复杂度的搜索算法改进成了具有多项式时间复杂度的算法 其中的关键在于解决冗余 这是动态规划算法的根本目的 三要素 F i j max f i 1 j 1 f i 1 j a i j 状态阶段决策 最长上升子序列 给出一个由n个数组成的序列a 1 n 找出它的最长单调子序列的长度 问题分析 如果前i 1个数中用到a j a j a i 构成了一个的最长的上升序列 加上第i个数a i 就是前i个数中用到i的最长的序列了 从上面的分析可以看出这样划分问题满足最优子结构 那满足无后效性么 显然对于第i个数时只考虑前i 1个数 显然满足无后效性 可以用动态规划解 最长上升子序列 状态转移方程f i max f j 1 0 j i且a j a i For i 1 i n i For j 1 j i j If a j a i F i max f i f j 1 拦截导弹poj1887某国为了防御敌国的导弹袭击 发展出一种导弹拦截系统 但是这种导弹拦截系统有一个缺陷 虽然它的第一发炮弹能够到达任意的高度 但是以后每一发炮弹都不能高于前一发的高度 某天 雷达捕捉到敌国的导弹来袭 由于该系统还在试用阶段 所以只有一套系统 因此有可能不能拦截所有的导弹 输入导弹依次飞来的高度 计算这套系统最多能拦截多少导弹 状态的表示f i 表示当第i个导弹必须拦截时 前i个导弹最多能拦截掉多少 状态转移方程f i max f j 1 0 j i且a j a i 合唱队形 N位同学站成一排 音乐老师要请其中的 N K 位同学出列 使得剩下的K位同学排成合唱队形 合唱队形是指这样的一种队形 设K位同学从左到右依次编号为1 2 K 他们的身高分别为T1 T2 TK 则他们的身高满足T1Ti 1 TK 1 i K 你的任务是 已知所有N位同学的身高 计算最少需要几位同学出列 可以使得剩下的同学排成合唱队形 poj2711 分别从前往后 从后往前做最长上升子序列最后扫一遍 寻找两种序列和长度最大的值 类似的问题 最长下降子序列最长上升子串最长公共子串 滑雪问题 poj1088 Michael喜欢滑雪百这并不奇怪 因为滑雪的确很刺激 可是为了获得速度 滑的区域必须向下倾斜 而且当你滑到坡底 你不得不再次走上坡或者等待升降机来载你 Michael想知道在一个区域中最长底滑坡 区域由一个二维数组给出 数组的每个数字代表点的高度 下面是一个例子12345161718196152425207142322218131211109 按照高度 从大到小排列 然后利用动态规划往一个高度下降的方向就可以处理 转换为类似于最长上升子序列问题F i max f j 1 a i a j 区域动归 石子合并 在一个圆形操场的四周摆放着n堆石子 现要将石子有次序地合并成一堆 规定每次只能选相邻的2堆石子合并成新的一堆 并将新的一堆石子数记为该次合并的代价 试设计一个算法 计算出将n堆石子合并成一堆的最小代价 阶段 石子的每一次合并过程 先两堆合并 再三堆合并 最后N堆合并状态 s i j 表示从编号为i的石头开始合并j堆决策 把当前阶段的合并方法细分成前一阶段已计算出的方法 选择其中的最优方案 第一阶段 两堆合并过程如下 其中sum i j 表示从i开始数j个数的和s 1 2 s 1 1 s 2 1 sum 1 2 s 2 2 s 2 1 s 3 1 sum 2 2 s 3 2 s 3 1 s 4 1 sum 3 2 s 4 2 s 4 1 s 5 1 sum 4 2 s 5 2 s 5 1 s 6 1 sum 5 2 s 6 2 s 6 1 s 1 1 sum 6 2 第二阶段 三堆合并可以拆成两两合并 拆分方法有两种 前两个为一组或后两个为一组s 1 3 s 1 2 s 3 1 sum 1 3 s 1 3 s 1 1 s 2 2 sum 1 3 s 2 3 s 2 2 s 4 1 sum 2 3 s 2 3 s 2 1 s 3 2 sum 2 3 第三阶段 四堆合并的拆分方法用三种 同理求出三种分法的得分 取其最优即可 以后第四阶段 第五阶段依次类推 最后在最后阶段中找出最优答案即可 状态转移方程F i j max f i k f i k 1 j k sum i j 时间轴动归 Tom的烦恼Tom加工一些不同零件 不同零件的加工费和加工时间要求不同 有些加工时间要求甚至是冲突的 但开始和结束时间相同不算冲突 在某个时间内他只能选择某种零件加工 因为他只有一台机器 为了赚得尽量多的加工费 Tom不知如何进行取舍 现在请你帮Tom设计一个程序 合理选择部分 或全部 零件进行加工 使得得到最大的加工费 输入文件input txt的第一行是一个整数n表示共有n个零件须加工 接下来的n行中 每行有3个整数 分别表示每个零件加工的时间要求 第一个表示开始时间 第二个表示该零件加工的结束时间 第三个表示加工该零件可以得到的加工费 数据中的每个数值不会超过100000 输出文件output txt只包含一个整数 表示Tom可以得到的最大加工费 结果输出到文件output txt 输入输出样例 输入样例 3131046202525 输出样例 30 用sum i 表示到达时刻i时所能得到的最大收益 用a j 1 表示任务j的开始时间 a j 2 表示任务j的结束时刻 b j 表示任务j完成所得的加工费 状态转移方程sum i max sum k b j 1 k a j 1 a j 2 i 核心程序如下 sum 0 0 fori 1tomdobeginmax 0 forj 1tondoifa j 2 ithenifmax sum a j 1 b j thenmax sum a j 1 b j sum i max end 算法优化 1 原算法的时间复杂度是 2 是否有优化的余地 3 排除重复是本题一个优化的方向 优化后的核心算法部分 对所有任务按照结束时间进行从小到大排序 计算最后一个任务的结束时刻m ans 0 0 fori 1tomdobeginans i ans i 1 if当前有任务j刚好结束 j可能不止一个 thenbeginifans i ans a j 1 b j thenans i ans a j 1 b j end end 传纸条 noip2008而小渊和小轩被安排在m行n列矩阵对角线的两端 因此 他们就无法直接交谈了 幸运的是 他们可以通过传纸条来进行交流 从小渊传到小轩的纸条只可以向下或者向右传递 从小轩传给小渊的纸条只可以向上或者向左传递 多进程动归 班里每个同学都可以帮他们传递 但只会帮他们一次 还有一件事情需要注意 全班每个同学愿意帮忙的好感度有高有低 可以用一个0 100的自然数来表示 数越大表示越好心 小渊和小轩希望尽可能找好心程度高的同学来帮忙传纸条 即找到来回两条传递路径 使得这两条路径上同学的好心程度之和最大 输出最大的好心程度之 问题简化 假定小渊传给小轩 小轩无需回复 数字三角形 F i j max f i 1 j 1 f i 1 j a i j 两条路 加一维 F i j k max f i 1 j 1 k 1 f i 1 j 1 k f i 1 j k 1 f i 1 j k a i j a i k 对吗 加判断 F i j k max f i 1 j 1 k 1 f i 1 j 1 k f i 1 j k 1 f i 1 j k a i j a i k j k 不能从上一行的同一个格子转移 背包引入 有N件物品和一个容量为V的背包 第i件物品的容量为1 价值是w i 求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量 且价值总和最大 01背包 有N件物品和一个容量为V的背包 第i件物品的费用是c i 价值是w i 求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量 且价值总和最大 这是最基础的背包问题 特点是 每种物品仅有一件 可以选择放或不放 f i v 表示前i件物品恰放入一个容量为v的背包可以获得的最大价值 f i v max f i 1 v f i 1 v c i w i 空间优化 fori 1 Nforv 0 Vf v max f v f v c i w i 不对 会导致物品重复购买 fori 1 Nforv V 0f v max f v f v c i w i 空间复杂度O V 完全背包 有N种物品和一个容量为V的背包 每种物品都有无限件可用 第i种物品的费用是c i 价值是w i 求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量 且价值总和最大 f i v max f i 1 v k c i k w i 0 k c i v 这跟01背包问题一样有O N V 个状态需要求解 求解状态f i v 的时间是O v c i 总的复杂度是超过O VN 的 优化 把第i种物品拆成费用为c i 2 k 价值为w i 2 k的若干件物品 其中k满足c i 2 k V二进制的思想这样把每种物品拆成O log V c i 件物品 得到了更优的O VN 的算法 多重背包 有N种物品和一个容量为V的背包 第i种物品最多有n i 件可用 每件费用是c i 价值是w i 求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量 且价值总和最大 这题目和完全背包问题很类似 基本的方程只需将完全背包问题的方程略微一改即可 因为对于第i种物品有n i 1种策略 取0件 取1件 取n i 件 令f i v 表示前i种物品恰放入一个容量为v的背包的最大权值 则 f i v max f i 1 v k c i k w i 0 k n i 二维费用的背包 二维费用的背包问题是指 对于每件物品 具有两种不同的费用 选择这件物品必须同时付出这两种代价 对于每种代价都有一个可付出的最大值 背包容量 问怎样选择物品可以得到最大的价值 设这两种代价分别为代价1和代价2 第i件物品所需的两种代价分别为a i 和b i 两种代价可付出的最大值 两种背包容量 分别为V和U 物品的价值为w i 费用加了一维 只需状态也加一维即可 设f i v u 表示前i件物品付出两种代价分别为v和u时可获得的最大价值 状态转移方程就是 f i v u max f i 1 v u f i 1 v a i u b i w i 有依赖的背包 这种背包问题的物品间存在某种 依赖 的关系 也就是说 i依赖于j 表示若选物品i 则必须选物品j 金明的预算 金明今天很开心 家里购置的新房就要领钥匙了 新房里有一间金明自己专用的很宽敞的房间 更让他高兴的是 妈妈昨天对他说 你的房间需要购买哪些物品 怎么布置 你说了算 只要不超过N元钱就行 今天一早 金明就开始做预算了 他把想买的物品分为两类 主件与附件 附件是从属于某个主件的 下表就是一些主件与附件的例子 主件附件电脑打印机 扫描仪书柜图书书桌台灯 文具工作椅无 如果要买归类为附件的物品 必须先买该附件所属的主件 每个主件可以有0个 1个或2个附件 附件不再有从属于自己的附件 金明想买的东西很多 肯定会超过妈妈限定的N元 于是 他把每件物品规定了一个重要度 分为5等 用整数1 5表示 第5等最重要 他
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自主进食能力:幼儿园餐点护理的自理培养
- 特级护理设备日常维护与安全使用
- 2025 三年级数学上册万以内减法拓展提高课件
- 成本管控与患者价值创造
- 成本管控信息化的效果评估方法
- 老年认知障碍照护:养老护理员定向力训练方法
- 电气运输设备 第3-1部分:电动滑板设备总运行时间的测试方法及温度条件 发展报告
- 医学中耳炎诊疗统计案例教学课件
- 医学真性红细胞增多症靶向治疗案例教学课件
- 药流后气血不足?食疗方帮你补回来
- 2025年郑州水务集团有限公司招聘80人模拟试卷带答案解析
- 2025年中国铁路呼和浩特局集团有限公司招聘高校毕业生406人备考题库附答案
- 企业公转私合同范本
- 2025秋人教版小学美术二年级上册期末过关练习卷及答案 (三套)
- Module2 Unit2 How much cheese did you buy(教学设计)-2024-2025学年外研版(三起)英语五年级上册
- 2025国家电投集团河南公司招聘8人笔试历年备考题库附带答案详解试卷3套
- 采购经理个人述职报告
- 大单元整合 数与代数(比)六年级数学上册(北师大版)(含解析)
- 大模型在企业的应用实践
- 2025年河南省体育彩票管理中心公开招聘合同制聘用人员50人笔试考试备考题库及答案解析
- 2025年河北机关事业单位工人技能等级考试题库(含答案)
评论
0/150
提交评论