新编文档ACM动态规划入门精品文档PPT课件

合集下载

动态规划入门讲解PPT共33页

动态规划入门讲解PPT共33页

1.最优子结构
当前取得了最优值,那么直接用这个值来参与计算后 面的状态能使后面的也最优
只要比较取一个值最优的保存
2.无后效性
当前作出决策只会影响后面的状态 前面的决策的影响都在状态中被包含了顺序
3.重叠子问题
也就是有前所述的那种重复计算的减少,动态规划才能减 少算法的运行时间
动态规划的要素
空的裂解原子核(POJ1887)
灵乌路空有着特别姿态的鸦。左足是“分解之足”、右足是“融 合之足”、还有制御两者的右手“第三足”,她以这三足操控著 究极的能源。
空居住在地灵殿在无聊的时候经常控制原子核进行核裂解来 练习自己的能力。她捕捉到了N个原子核,控制每个原子核进 行裂解会获得Ci的能量值,她可以依次挑选一个序列进行裂变 (不必连续)。但是由于她能力的特殊性,她用来裂解的原子 核的能量只能越来越低,否则会导致控制失败而造成核反应制 御不能的后果。但是空是一个低智力的笨蛋,她想让你帮忙计 算她最多可以控制几个原子核进行裂变。
动态规划的求解模式和程序实现
划分阶段 设计状态 确定决策写出转移 写出方程和边界 递推:看作递推方程,用循环依次递推出每一个状态 记忆化搜索:按搜索的方式写,但是对于已经搜索过的
状态直接返回最优值,不再次搜索
按照方程的形态大致分类的几个例题
线性选择 背包问题 区间DP TreeDP
幻想乡的夏天的一天,萃香得到了N堆西瓜,她想把这些西瓜合 并成一堆,每次只能合并相邻的两堆,合并的代价为这两堆西瓜 的数量之和,合并后与这两堆西瓜相邻的西瓜将和新堆相邻,合 并时由于选择的顺序不同,合并的总代价也不相同,找出一种合 理的方法,使总的代价最小。
分析
阶段:顺序排列的西瓜堆将随着合并逐渐减少从i到j的长为j-i+1的 区间可以认为是阶段

《动态规划法》课件

《动态规划法》课件

动态规划法的发展趋势
混合整数动态规划
将整数变量引入动态规划中,解决更复杂的问题 ,如组合优化问题。
动态规划与机器学习结合
利用机器学习算法辅助动态规划求解,提高算法 的效率和准确性。
ABCD
多目标动态规划
考虑多个相互冲突的目标,寻求最优解的权衡。
分布式动态规划
将问题分解为多个子问题,在分布式系统中并行 求解,提高大规模问题的处理能力。
排班问题
总结词
动态规划法可以用于解决排班问题,使得员工的工作计 划安排最优。
详细描述
排班问题是一个多约束优化问题,涉及到员工的工作时 间、班次、休息时间等多个因素。通过构建状态转移方 程和优先级规则,动态规划法能够求解出满足所有约束 条件的最佳排班方案。
生产调度问题
总结词
动态规划法可以应用于生产调度问题,优化生产流程 和资源分配。
策略
一系列决策的集合,表示从初始状态到终止状态的整个求解过程。
转移方程与最优解
转移方程
描述状态转移的数学方程,表示从一个状态转移到另一个状 态的关系。
最优解
在所有可能的策略中,能够使目标函数达到最优值的策略。
03
动态规划法的求解步骤
问题的分解
总结词
将复杂问题分解为若干个子问题
详细描述
动态规划法首先将原问题分解为若干个子问题,每个子问题都是原问题的简化版本。通过解决这些子 问题,可以逐步推导出原问题的解决方案。
02
动态规划法的基本概念
阶段与状态
01
阶段
将问题的求解过程划分为若干个 相互联系的阶段,以便按一定的 次序进行求解。
02
03
状态
状态转移
在某一时刻,问题所处的情况或 状态。

ACM课件13.递归与动态规划(二)

ACM课件13.递归与动态规划(二)
程序(二) 、参考程序 二
void tryToPut(int i) { if(i > 8) { //如果最后一个皇后被放置完毕,将当前解复制到全部解中 如果最后一个皇后被放置完毕, 如果最后一个皇后被放置完毕 for(int k = 1; k <= 8; k ++) record[count][k] = mark[k]; count ++; } for(int j=1; j<=8; j++) { //逐一尝试将当前皇后放置在不同列上 逐一尝试将当前皇后放置在不同列上 if(range[j] && line1 [i + j] && line2[i - j + 9]) //如果与前面不冲突 如果与前面不冲突 { mark[i] = j; range[j] = line1[i + j] = line2[i - j + 9] = false; tryToPut(i + 1); range[j] = line1[i + j] = line2[i - j + 9] = true;//回溯,撤销控制 回溯, 回溯 } } }
问题描述
输入数据 行是测试数据的组数n,后面跟着n 行输入。 第 1 行是测试数据的组数 ,后面跟着 行输入。每组测试数 据占1 包括一个正整数b(1 <= b <= 92) 据占 行,包括一个正整数 输出要求 n 行,每行输出对应一个输入。输出应是一个正整数,是对应 每行输出对应一个输入。输出应是一个正整数, 于b 的皇后串 输入样例 2 1 92 输出样例 15863724 84136275
3/34
3、解题思路(一) 、解题思路 一

《动态规划》课件

《动态规划》课件
《动态规划》ppt课 件
xx年xx月xx日
• 动态规划概述 • 动态规划的基本概念 • 动态规划的求解方法 • 动态规划的应用实例 • 动态规划的优化技巧 • 动态规划的总结与展望
目录
01
动态规划概述
定义与特点
定义
动态规划是一种通过将原问题分解为 相互重叠的子问题,并存储子问题的 解以避免重复计算的方法。
特点
动态规划适用于具有重叠子问题和最 优子结构的问题,通过将问题分解为 子问题,可以找到最优解。
动态规划的适用范围
最优化问题
01
动态规划适用于解决最优化问题,如最大/最小化问题、决策问
题等。
子问题重叠
02
动态规划适用于子问题重叠的情况,即子问题之间存在共享状
态或参数。
递归关系
03
动态规划适用于具有递归关系的问题,可以通过递归方式求解
机器调度问题
总结词
动态规划可以应用于机器调度问题,以确定最优的调度方案,满足生产需求并降低成本 。
详细描述
机器调度问题是一个经典的优化问题,涉及到如何分配任务到机器上,以最小化成本或 最大化效率。通过动态规划,可以将机器调度问题分解为一系列子问题,如确定每个任 务的调度顺序、分配机器等,并逐个求解子问题的最优解,最终得到整个调度方案的最
VS
详细描述
记忆化搜索法是一种优化技术,通过存储 已解决的子问题的解,避免重复计算,提 高求解效率。这种方法适用于子问题数量 较少且相互独立的情况。
04
动态规划的应用实例
最短路径问题
总结词
通过动态规划解决最短路径问题,可以找到 从起点到终点的最短路径。
详细描述
在图论中,最短路径问题是一个经典的优化 问题,旨在找到从起点到终点之间的一条路 径,使得路径上的所有边的权重之和最小。 动态规划是一种有效的解决方法,通过将问 题分解为子问题并存储子问题的解,避免了 重复计算,提高了求解效率。

《动态规划课件》课件

《动态规划课件》课件

应用场景:求解最短路径、背 包问题等
注意事项:避免重复计算子问 题和记忆化搜索
定义:将问题划分为 若干个较小的子问题, 并逐个解决子问题, 最终得到原问题的解
特点:将原问题分解为 更小的子问题,通过求 解子问题的最优解得到 原问题的最优解
应用场景:适用于 具有重叠子问题和 最优子结构特性的 问题
示例:背包问题、 最大子段和问题等
分段算法的代码 实现
分段算法的时间 复杂度分析
避免重复计算:使用备忘录或动态规划表来记录已计算过的子问题 减少子问题的数量:通过合并或减少不必要的子问题来降低计算复杂度 选择合适的递归方式:根据问题的特点选择最优的递归方式 优化递归栈:通过减少递归深度或使用循环代替递归来提高性能
优化算法:动态规划可以优化算法,提高计算效率 避免重复计算:通过记忆化搜索,避免重复计算,提高计算速度
添加标题ቤተ መጻሕፍቲ ባይዱ
添加标题
添加标题
添加标题
动态规划与分治法比较:分治法将 问题分解为子问题,而动态规划将 子问题联系起来
动态规划与回溯法比较:回溯法会 穷举所有可能解,而动态规划可以 避免不必要的搜索
机器学习与深度 学习中的动态规 划
自然语言处理中 的动态规划
计算机视觉中的 动态规划
推荐系统中的动 态规划
最大子段和问题的定义 最大子段和问题的应用场景 最大子段和问题的解决方法 最大子段和问题的实际应用案例
定义:矩阵链乘法问题是一种优化问题,通过动态规划算法来求解
应用场景:在科学计算、机器学习、图像处理等领域都有广泛的应用
算法原理:通过动态规划算法,将矩阵链乘法问题转化为子问题,从而避免重复计算,提高 计算效率
应用场景:背包问题在计算机科学、运筹学、经济学等领域都有广泛的应用,如资源分配、路径规划、时间表安 排等。

动态规划(完整)ppt课件

动态规划(完整)ppt课件

3
• Ⅲ --Ⅳ :
B1—C1—T
4
• Ⅱ--Ⅲ--Ⅳ :A2—B1—C1—T
7
• Ⅰ--Ⅱ--Ⅲ --Ⅳ:

Q—A2—B1—C1—T
11

Q--A3—B1—C1—T
11

Q--A3—B2—C2—T
11
最新版整理ppt
3
最短路径
11
4
7
A1
4
2
6
11
47
3 2
Q
A2
4
B1
1
4 76
3
C1
3
B2 3
最新版整理ppt
16
(4)策略和允许策略集合
策略(Policy)也叫决策序列.策略有全过程 策略和 k 部子策略之分,全过程策略是指具 有n 个阶段的全部过程,由依次进行的 n 个 阶段决策构成的决策序列,简称策略,表示
为 p1,n{x1,x2, ,xn}。从 k 阶段到第 n 阶段,
依次进行的阶段决策构成的决策序列称为 k
新分支的创立。
最新版整理ppt
6
• 动态规划将复杂的多阶段决策问题分解为 一系列简单的、离散的单阶段决策问题, 采用顺序求解方法, 通过解一系列小问题 达到求解整个问题目的;
• 动态规划的各个决策阶段不但要考虑本阶 段的决策目标, 还要兼顾整个决策过程的 整体目标, 从而实现整体最优决策.
最新版整理ppt
第七章 动态规划
主要内容:
§7.1多阶段决策问题 §7.2 动态规划的基本概念和基本原理 §7.3 动态规划应用举例
最新版整理ppt
1
例 求解最短路问题
2
Q
4

ACM课件(lecture_04)动态规划(1).

ACM课件(lecture_04)动态规划(1).
33 2019/8/9
思考:免费馅饼
34 2019/8/9
如何解决?
请发表见解
35 2019/8/9
Any Question?
36 2019/8/9
附录:DP练习题(HDOJ):
1003、1087、1159、1160、1176 1024、1025、1058、1069、1081 1074、1157、1158、1466
试想一下:
这道题如果用枚举法(暴力思想),在数 塔层数稍大的情况下(如31),则需要列 举出的路径条数将是一个非常庞大的数目 (2^30= 1024^3 > 10^9=10亿)。
13 2019/8/9
所以,不可以如此暴力!!!
14 2019/8/9
考虑一下:
从顶点出发时到底向左走还是向右走应取决 于是从左走能取到最大值还是从右走能取到最大 值,只要左右两道路径上的最大值求出来了才能 作出决策。
1078、1080、1114 1203、1294、1227、1223 1500、1501、1502、1503 1505、1506、1510、2059
37 2019/8/9
课后一定要练习! DP”相-当-”重要!
38 2019/8/9
有志于参加竞赛的同学, 加油!!!
39 2019/8/9
最优解。
其中(1)——(3)步是动态规划算法的 基本步骤。在只需要求出最优值的情形,步骤 (4)可以省去。若需要求出问题的一个最优 解,则必须执行步骤(4)。此时,在步骤(3) 中计算最优值时,通常需记录更多的信息,以 便在步骤(4)中,根据所记录的信息,快速 构造出一个最优解。
32 2019/8/9
(n-2)*2+0=4 或者 (n-2)*2+1=5 4、 第四条直线不与任何一条直线平行,交点数为:

第八章动态规划1PPT课件

第八章动态规划1PPT课件

第八章 动态规划
3.决策(Decision) uk(sk) 决策指从一个阶段的某个状态演变到下一个阶段的
某个状态的选择。
uk(sk)表示第k阶段当状态处于sk时的决策变量。 Dk(sk)表示决策集合。 D1(s1)= u1(A) = B1,B2 ; D2(S2)= u2(B1),u2(B2) =
C1,C2,C3;C2,C3,C4 ……
第八章 动态规划
二、动态规划的基本概念和基本原理
以书中例1最短路线问题为例,说明动态 规划的基本概念。
第八章 动态规划
1.阶段(stage)k 阶段指作出决策的若干轮次。将所给问题的过程,按
时间或空间特征分解成若干个相互联系的阶段,以 便按次序去求每阶段的解,常用k表示阶段变量。 如上例中我们把从A到G看成一个六阶段问题,k(阶 段变量)分别等于1,2,3,4,5,6
1、离散确定型; 2、离散随机型; 3、连续确定型; 4、连续随机型;
第八章 动态规划
• 应用
– 最短路问题 – 资源分配问题 – 生产调度问题 – 库存问题 – 排序问题 – 设备更新问题 – 生产过程最优控制问题
第八章 动态规划
多阶段决策过程最优化问题举例
1、最短路问题:运输网络如下图,求从A到E的最短路。
D5(S5)= u5(E1),u5(E2),u5(E3) = F1,F2; F1,F2; F1,F2 = F1,F2
D6(S6)= u6(F1),u6(F2) = G,G = G
第八章 动态规划
4.策略(policy)和子策略(sub-policy)
策略是指全过程中按顺序排列的各阶段决策 组成的集合。记为:p1,n(s1)
增加产量
成本降低 库存费增加

浙江大学acm程序设计竞赛动态规划讲义.ppt

浙江大学acm程序设计竞赛动态规划讲义.ppt

买 车 票
怎 么 办
当前所在的某个车站



这一题的以前状态其实只有3种.即 满足3种距离(收费)情况的3个车站.
要知道这3个车站可以先做一个预

状态.但阶段不是以前状态,状态是
决 策
阶段的表现形式.数字三角形的以前 状态就是当前层的前一层.
那什么是决策呢?我们看看下面一
张图就知道了.
显然,从上图可以看出,当前状态通
决 过决策,回到了以前状态.可见决策 策 其实就是状态之间的桥梁。而以前
状态也就决定了当前状态的情况。
数字三角形的决策就是选择相邻的两 个以前状态的最优值。

规 的
我们一般在动规的时候所用到的一
些数组,也就是用来存储每个状态 的最优值的。

我们就从动态规划的要诀,也就是

核心部分“状态”开始,来逐步了

解动态规划。


拦截导弹(Noip2002)
某国为了防御敌国的导弹袭击,发
展出一种导弹拦截系统。但是这种

导弹拦截系统 有一个缺陷:虽然它 的第一发炮弹能够到达任意的高度,
也就是把产生过的最优状态,又产
生了一次。为了避免浪费,很显然,
我们存放一个opt数组:
Opt[i, j] - 每产生一个f(i, j),
将f(i, j)的值放入opt中,以后再
次调用到f(i, j)的时候,直接从
记 忆
opt[i, j]来取就可以了。
于是动态规划的记状忆态化转移的方功程效被直
化 搜 索

+ min{f(i-1, j)+f(i-1, j + 1)}

c语言acm算法动态规划(1)精品PPT课件

c语言acm算法动态规划(1)精品PPT课件
27 11.10.2020
理论总结
28 11.10.2020
请回答: 穷举(暴力)方法的时间复杂度是多少?
17 11.10.2020
解决方案:
I 012 3 4 5 6 7 8 Num[I] 1 4 7 2 5 8 3 6 9
F[I] 1 2 3 2 3 4 3 4 5
18 11.10.2020
三、HDOJ_1160 FatMouse's Speed
题目链接
即n=4时,有0个,3个,4个,5个,6个不同交点数。
9 11.10.2020
从上述n=4的分析过程中,我们发现:
m条直线的交点方案数 =(m-r)条平行线与r条直线交叉的交点 数
+ r条直线本身的交点方案 =(m-r)*r+r条之间本身的交点方案数 (1<=r<=m)
10 11.10.2020
一、数塔问题
13 11.10.2020
拒绝暴力,倡导和谐~
14 11.10.2020
考虑一下:
从顶点出发时到底向左走还是向右走应取决 于是从左走能取到最大值还是从右走能取到最大 值,只要左右两道路径上的最大值求出来了才能 作出决策。
同样,下一层的走向又要取决于再下一层上 的最大值是否已经求出才能决策。这样一层一层 推下去,直到倒数第二层时就非常明了。
Sample Input 6008 1300 6000 2100 500 2000 1000 4000 1100 3000 6000 2000 8000 1400 6000 1200 2000 1900
Sample Output
4 4 5 9 7
19 11.10.2020
题目分析:
设Mice[i].W表示第i只老鼠的重量,Mice[i].S 表示第i只老鼠的速度。我们先对Mice进行排 序,以W为第一关键字,从小到大,S为第二 关键字,从大到小。

《动态规划》课件

《动态规划》课件
《动态规划》PPT课件
动态规划(Dynamic Programming)是一种用来解决复杂问题的算法思想。
什么是动态规划
动态规划是一种将问题拆分成子问题并进行最优解比较的算法,常用于求解最优化问题。
问题模型
状态
将问题抽象成能够描述当前情况的状态。
目标
定义问题的目标,通常是最小化或最大化某 个指标。
经典面试题:爬楼梯问题
爬楼梯问题是指给定楼梯的阶数,求解爬到楼顶的不同方式的数量。
经典面试题:硬币找零问题
硬币找零问题是指给定一定面值的硬币和一个金额,找到凑出该金额的最少 硬币数。
经典面试题:最长回文子串问题
最长回文子串问题是指找到给定字符串中最长的回文子串。
实用案例:机器人找出路
机器人找出路是指给定一个迷宫,找到从起点到终点的路径。
决策
根据状态作出选择或决策。
转移方程
根据子问题的最优解推导出整体问题的最优 解。
最优子结构和重叠子问题
1 最优子结构
问题的最优解包含了子问题的最优解。
2 重叠子问题
子问题之间存在重复的计算,可以利用记 忆化存储中间结果来优化。
动态规划三部曲
1
定义状态
明确问题的状导转移方程
国王游戏问题
国王游戏问题是指在一个棋盘上放置国王,使得它们无法互相攻击。
编辑距离问题
编辑距离问题是指计算两个字符串之间转换的最小操作次数,包括插入、删 除和替换操作。
矩阵连乘问题
矩阵连乘问题是指给定一系列矩阵,找到最佳的乘法顺序,使得计算乘法的总次数最小。
最长递增子序列问题
最长递增子序列问题是指找到给定序列中最长的递增子序列的长度。
斐波那契数列问题

ACM课件 动态规划

ACM课件 动态规划

• 所有的海盗都乐于看到他们的一位同伙被扔 进海里,不过,如果让他们选择的话,他们 还是宁可得一笔现金。他们当然也不愿意自 己被扔到海里。
• 所有的海盗都是聪明绝顶的,而且知道其他 的海盗也是聪明绝顶的。
• 此外,没有两名海盗是同等厉害的——这些 海盗按照完全由上到下的等级排好了座次, 并且每个人都清楚自己和其他所有人的等级。
(4)C1,C2,C3是第二次输入结点,他们到D1, D2各有两种费用。此时应计算C1,C2,C3分别到E 的最少费用。 f(C1) =min{C1D1+ f(D1) ,C1D2+ f(D2)}。
• 3号海盗的分配方案:3号海盗分得99块 金子,2号海盗一无所获,1号海盗得1块 金子。
•1号海盗知道,如果3号的方案被否决,那么最后 将只剩2个海盗,而1号将肯定一无所获——此外, 3号也明白1号了解这一形势。因此,只要3号的分 配方案给1号一点甜头使他不至于空手而归,那么 不论3号提出什么样的分配方案,1号都将投赞成票。 因此3号需要分出尽可能少的一点金子来贿赂1号海 盗
• 4号的分配方案应是:99块金子归自己,3 号一块也得不到,2号得1块金子,1号也是 一块也得不到。
4号海盗的策略也差不多。他需要有50%的支 持票,因此同3号一样也需再找一人做同党。 他可以给同党的最低贿赂是1块金子,而他可 以用这块金子来收买2号海盗。因为如果4号被 否决而3号得以通过,则2号将一文不名。
• 除起点A和终点E外,其它各点既是上一阶 段的终点又是下一阶段的起点。
例若在如选第从择二AB阶2到的段B决,的策再第,从一BB阶22就段点是中出第,发一A,为阶对起段于点在B,2我点终们就点决有有策一B之个1,下可的供 B结选2果两择,个的它,终既因点是而集第这合一时(C阶走1,段的C路路2线,线的C有3终两);点个若,选选又择择是,由第一B二是2走阶走至段到C路B21为线, 一的第是始二走点阶到。段B的2。决策,则C2就是第二阶段的终点,同时又 是第三阶段的始点。

ACM培训03-动态规划

ACM培训03-动态规划

p( q+1,r,k-1 )
d ( l , q )= s[l] s[l+1]…s[q]
q的变化范围:从q+1到r之间所包含 的数字个数应大于k-1(乘号个数)。
r-(q+1)+1>k-1 q<r-k+1
p( l,r,k )=max{ d( l, q ) * p( q+1, r ,k-1 ) }
状态转移方程:用数学公式描述与阶段相 关的状态间的演变规律。
动态规划是运筹学的一个重要分支,是解 决多阶段决策过程最优化的一种方法。
所谓多阶段决策过程,是将所研究的过程 划分为若干个相互联系的阶段,在求解 时,对每一个阶段都要做出决策,前一 个决策确定以后,常常会影响下一个阶 段的决策。
动态规划所依据的是“最优性原理”。
显然,要依照上述递推过程求解,需要倒 过来,从P(P)出发,先求出第一阶段的P(O) 和P(N),再求第二阶段的P(K),P(L), P(M);……,最后得到P(A)。
3. 选择数据结构,将每条路经的长度存在数 组中。
东西方向上的道路长度存在两维数组h[4][3]中规 定数组的第一维为行号,第二维为列号。
10 动态规划
任务:
P是出发点,从P到A,求最短路径(图1)
G
3 D 1B 2
A
1
2
2
3
K
3 H
4 E
5
4
1
2
N
2 L
1 I
4
2
2
3
3
2
3
C
4
阶段5
F
4 阶段4
P
O
M
J
阶段1
阶段2 阶段3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4
用暴力的方法,可以吗?
2020/9/21
5
试想一下:
这道题如果用枚举法(暴力思想),在 数塔层数稍大的情况下(如31),则 需要列举出的路径条数将是一个非常庞 大的数目(2^30= 1024^3 > 10^9=10亿)。
2020/9/21
6
拒绝暴力,倡导和谐~
2020/9/21
7
考虑一下:
A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... shows the first 20 humble numbers.
结论?
2020/9/21
22
f(i,j) 表示前j个取i对最小的疲劳度
f(i,j) = min(f(i,j-1),
f(i-1,j-2)+(item(j)-item(j-1))^2
)
2020/9/21
23
五、经典问题:1058 Humble Numbers
Problem Description
2020/9/21
18
第一感觉:
根据题目的要求,每次提的两个物 品重量差越小越好,是不是每次提 的物品一定是重量相邻的物品呢?
证明:假设四个从小到大的数:a、b、c、 d,只需证明以下表达式成立即可:
(a-b)^2+(c-d)^2< (a-c)^2+(b-d)^2
(a-b)^2+(c-d)^2< (a-d)^2+(b-c)^2 ……(略)
2020/9/21
19
预备工作:
排序!
2020/9/21
20
第二感觉:
对于一次操作,显然提的物品重量越接 近越好,是不是可以贪心呢?
请思考… 考虑以下情况:
1 4 5 8 10 11
什么结论?
2020/9/21
21
详细分析:
从最简单的情况考虑: 2个物品选一对,结论显然
3个物品选一对,… 4个物品选一对?(如何利用前面的知识) n个物品选一对,… n个物品选二对,… 最终问题:n个物品选k对,如何?(n>=2k)
结论:自顶向下的分析,自底向上的计算。
2020/9/21
8
二、经典问题:最长有序子序列
I 012 3 4 5 6 7 8 Num[I] 1 4 7 2 5 8 3 6 9
2020/9/21
9
解决方案:
I 0 12345 6 7 8 Num[I] 1 4 7 2 5 8 3 6 9
F[I] 1 2 3 2 3 4 3 4 5
ACM
ericxiesina
今天,
你 AC吗?
2020/9/21
2
第四讲
动态规划入门
(Dynamic programming)
2020/9/21
3
一、经典问题:数塔问题
有形如下图所示的数塔,从顶部出发,在每 一结点可以选择向左走或是向右走,一直走到底 层,要求找出一条路径,使路径上的值最大。
2020/9/21
2020/9/21
10
思考 1160 FatMouse's Speed
Sample Input
6008 6000 500 1000 1100 6000 8000 6000 2000
1300 2100 2000 4000 3000 2000 1400 1200 1900
Sample Output
4 4 5 9 7
由于f(i,j)只和f(i-1,j-1), f(i-1,j)和f(i,j-1)有关, 而在计 算f(i,j)时, 只要选择一个合适的顺序, 就可以保证这 三项都已经计算出来了, 这样就可以计算出f(i,j). 这 样一直推到f(len(a),len(b))就得到所要求的解了.
2020/9/21
16
Write a program to find and print the nth element in this sequence
2020/9/21
14
辅助空间变化示意图
abc f bc a111111 b122222 f122333 c123334 a123334 b123344
2020/9/21
15
子结构特征:
{ f(i,j)=
f(i-1,j-1)+1 (a[i]==b[j]) max(f(i-1,j),f(i,j-1)) (a[i]!=b[j])
从顶点出发时到底向左走还是向右走应取决于是 从左走能取到最大值还是从右走能取到最大值,只要 左右两道路径上的最大值求出来了才能作出决策。
同样,下一层的走向又要取决于再下一层上的最 大值是否已经求出才能决策。这样一层一层推下去, 直到倒数第二层时就非常明了。
如数字2,只要选择它下面较大值的结点19前进 就可以了。所以实际求解时,可从底层开始,层层递 进,最后得到最大值。
ቤተ መጻሕፍቲ ባይዱ
2020/9/21
11
再思考(1087)
Super Jumping! Jumping! Juping!
2020/9/21
12
解题思路?
三、经典问题:最长公共子序列
HDOJ-1159: Sample Input
abcfbc abfcab programming contest abcd mnp Sample Output 4 2 0
四、经典问题:1421 搬寝室
Sample Input 21 13
Sample Output 4
2020/9/21
17
搬寝室是很累的,xhd深有体会.时间追述2019 年7月9号,那天xhd迫于无奈要从27号楼搬到3 号楼,因为10号要封楼了.看着寝室里的n件物 品,xhd开始发呆,因为n是一个小于2000的整数, 实在是太多了,于是xhd决定随便搬2*k件过去 就行了.但还是会很累,因为2*k也不小是一个不 大于n的整数.幸运的是xhd根据多年的搬东西 的经验发现每搬一次的疲劳度是和左右手的物 品的重量差的平方成正比(这里补充一句,xhd每 次搬两件东西, 左手一件右手一件).例如xhd左 手拿重量为3的物品,右手拿重量为6的物品,则 他搬完这次的疲劳度为(6-3)^2 = 9.现在可怜 的xhd希望知道搬完这2*k件物品后的最佳状态 是怎样的(也就是最低的疲劳度),请告诉他吧.
相关文档
最新文档