(精品)NOIP普及讲座4-动态规划2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Excellent courseware
【输入格式】
第一行为硬币总值total和硬币种类数n。
以下n行为数值a[i],i=1,2,3...n
【输出格式】
一行,解决方案数
【样例输入】
83 5
50
25
10
5
1
【样例输出】
159
Excellent courseware
【样例说明】 0 x 50
0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50
【输入格式】
第1行为表示区域的二维数组的行数R和列数C(1≤R,C≥100)。下面是 R行,每行有C个数,代表高度。
【输出格式】
区域中最长滑坡的长度
Excellent courseware
【样例输入】 55 123 45 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 【样例输出】 25
【问题分析】 状态: f[i,j]代表前i个物体装在j重的包里的最优解 方程: f[i,j]=max(f[i-1,j],f[i-1,j-a[i]);
Excellent courseware
【程序实现】
Excellent courseware
【例题2】宝石手镯(usaco)
问题描述:
贝茜在珠宝店闲逛时,买到了一个中意的手镯。很自
0 x 50
0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 xExce2ll5ent co0ursxewa1re0
14 x 5 13 x 1
Leabharlann Baidu
【问题分析】 状态: f[i]代表面值为i的钱的换钱方案数 方程: f[i]=sum(f[i-a[k]])1<=k<=n;
Excellent courseware
【程序实现】
Excellent courseware
【例题4】滑雪 问题描述:
Michael喜欢滑雪。这并不奇怪, 因为滑雪的确很刺激 。可是为了获得速度,滑的区域必需向下倾斜,而且 当你滑到坡底,你不得不再次走上坡或者等待升降机 来载你。Michael想知道在一个区域中最长的滑坡。区 域由一个二维数组给出。数组的每个数字代表点的高 度。
重量和魅力值。
【输出格式】
输出只包括一行,这一行只包含一个整数,表示魅力值最多
能增加多少。
【样例输入】
3 70
71 100
69 1
12
【样例输出】
3
Excellent courseware
【问题分析】 状态: f[i,j]代表前i个宝石戴在j重的手上获得的最大魅力
值 方程: f[i,j]=max(f[i-1,j],f[i-1,j-a[i])+b[i];
Excellent courseware
【程序实现】
Excellent courseware
【例题3】奶牛打工 问题描述:
奶牛Bassie去DQ打工,遇到一个客人给了一张好大面 值的钞票,于是Bassie不得不为了给这位顾客找零而面 对这样一个问题:现在店里一共有n种硬币,对这些不 同种的硬币进行编号,编号为i的硬币面值为a[i] 。因 为奶牛的手指头是有限的,因此他只能向你求助啦。( 已知总需找零数为 total)(1<=total<=1000,1<=n<=1000,1<=a[i]<=3 00)求一共有多少种解决方案?
。于是贝茜找到了你,告诉了你她所有宝石的属性以
及她能忍受的重量,希望你能帮她计算一下,按照最
合理的方案镶嵌宝石的话,她的魅力值最多能增加多
少。
Excellent courseware
【输入格式】
输入的第一行有两个整数N(1 <= N <= 3,402)和M(1 <=
M <= 12,880),接下来的N行每行两个整数,分别表示宝石
Excellent courseware
下面是一个例子 1 2 3 45 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 一个人可以从某个点不滑向上下左右相邻四个点之一,当且仅当高度减 小,在上面的例子中,一条可行的不滑坡为24-17-16-1(从24开始, 在1结束)。当然25-24-23-…-3-2-1更长。事实上,这是最长 的一条。
动态规划2
Excellent courseware
【例题1】装箱问题(noi openjudge 8785) 问题描述: 有一个箱子容量为V(正整数,0<=v<=20000),同时有n个物品(0<
n<=30),每个物品有一个体积(正整数)。
要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
0 x 5 83 x 1 1 x 5 78 x 1 2 x 5 73 x 1 3 x 5 68 x 1 4 x 5 63 x 1 5 x 5 58 x 1 6 x 5 53 x 1 7 x 5 48 x 1 8 x 5 43 x 1 9 x 5 38 x 1 10 x 5 33 x 1 11 x 5 28 x 1 12 x 5 23 x 1 13 x 5 18 x 1
输入 第一行是一个整数V,表示箱子容量。 第二行是一个整数n,表示物品数。 接下来n行,每行一个正整数(不超过10000),分别表示这n个物品的各自
体积。 输出 一个整数,表示箱子剩余空间。Excellent courseware
样例输入 24 6 8 3 12 7 9 7 样例输出 0。
Excellent courseware
然地,她想从她收集的N(1 <= N <= 3,402)块宝石中
选出最好的那些镶在手镯上。对于第i块宝石,它的重
量为W_i(1 <= W_i <= 400),并且贝茜知道它在镶上
手镯后能为自己增加的魅力值D_i(1 <= D_i <= 100)
。由于贝茜只能忍受重量不超过M(1 <= M <=
12,880)的手镯,她可能无法把所有喜欢的宝石都镶上
【输入格式】
第一行为硬币总值total和硬币种类数n。
以下n行为数值a[i],i=1,2,3...n
【输出格式】
一行,解决方案数
【样例输入】
83 5
50
25
10
5
1
【样例输出】
159
Excellent courseware
【样例说明】 0 x 50
0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50 0 x 50
【输入格式】
第1行为表示区域的二维数组的行数R和列数C(1≤R,C≥100)。下面是 R行,每行有C个数,代表高度。
【输出格式】
区域中最长滑坡的长度
Excellent courseware
【样例输入】 55 123 45 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 【样例输出】 25
【问题分析】 状态: f[i,j]代表前i个物体装在j重的包里的最优解 方程: f[i,j]=max(f[i-1,j],f[i-1,j-a[i]);
Excellent courseware
【程序实现】
Excellent courseware
【例题2】宝石手镯(usaco)
问题描述:
贝茜在珠宝店闲逛时,买到了一个中意的手镯。很自
0 x 50
0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 x 25 0 x 10 0 xExce2ll5ent co0ursxewa1re0
14 x 5 13 x 1
Leabharlann Baidu
【问题分析】 状态: f[i]代表面值为i的钱的换钱方案数 方程: f[i]=sum(f[i-a[k]])1<=k<=n;
Excellent courseware
【程序实现】
Excellent courseware
【例题4】滑雪 问题描述:
Michael喜欢滑雪。这并不奇怪, 因为滑雪的确很刺激 。可是为了获得速度,滑的区域必需向下倾斜,而且 当你滑到坡底,你不得不再次走上坡或者等待升降机 来载你。Michael想知道在一个区域中最长的滑坡。区 域由一个二维数组给出。数组的每个数字代表点的高 度。
重量和魅力值。
【输出格式】
输出只包括一行,这一行只包含一个整数,表示魅力值最多
能增加多少。
【样例输入】
3 70
71 100
69 1
12
【样例输出】
3
Excellent courseware
【问题分析】 状态: f[i,j]代表前i个宝石戴在j重的手上获得的最大魅力
值 方程: f[i,j]=max(f[i-1,j],f[i-1,j-a[i])+b[i];
Excellent courseware
【程序实现】
Excellent courseware
【例题3】奶牛打工 问题描述:
奶牛Bassie去DQ打工,遇到一个客人给了一张好大面 值的钞票,于是Bassie不得不为了给这位顾客找零而面 对这样一个问题:现在店里一共有n种硬币,对这些不 同种的硬币进行编号,编号为i的硬币面值为a[i] 。因 为奶牛的手指头是有限的,因此他只能向你求助啦。( 已知总需找零数为 total)(1<=total<=1000,1<=n<=1000,1<=a[i]<=3 00)求一共有多少种解决方案?
。于是贝茜找到了你,告诉了你她所有宝石的属性以
及她能忍受的重量,希望你能帮她计算一下,按照最
合理的方案镶嵌宝石的话,她的魅力值最多能增加多
少。
Excellent courseware
【输入格式】
输入的第一行有两个整数N(1 <= N <= 3,402)和M(1 <=
M <= 12,880),接下来的N行每行两个整数,分别表示宝石
Excellent courseware
下面是一个例子 1 2 3 45 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 一个人可以从某个点不滑向上下左右相邻四个点之一,当且仅当高度减 小,在上面的例子中,一条可行的不滑坡为24-17-16-1(从24开始, 在1结束)。当然25-24-23-…-3-2-1更长。事实上,这是最长 的一条。
动态规划2
Excellent courseware
【例题1】装箱问题(noi openjudge 8785) 问题描述: 有一个箱子容量为V(正整数,0<=v<=20000),同时有n个物品(0<
n<=30),每个物品有一个体积(正整数)。
要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
0 x 5 83 x 1 1 x 5 78 x 1 2 x 5 73 x 1 3 x 5 68 x 1 4 x 5 63 x 1 5 x 5 58 x 1 6 x 5 53 x 1 7 x 5 48 x 1 8 x 5 43 x 1 9 x 5 38 x 1 10 x 5 33 x 1 11 x 5 28 x 1 12 x 5 23 x 1 13 x 5 18 x 1
输入 第一行是一个整数V,表示箱子容量。 第二行是一个整数n,表示物品数。 接下来n行,每行一个正整数(不超过10000),分别表示这n个物品的各自
体积。 输出 一个整数,表示箱子剩余空间。Excellent courseware
样例输入 24 6 8 3 12 7 9 7 样例输出 0。
Excellent courseware
然地,她想从她收集的N(1 <= N <= 3,402)块宝石中
选出最好的那些镶在手镯上。对于第i块宝石,它的重
量为W_i(1 <= W_i <= 400),并且贝茜知道它在镶上
手镯后能为自己增加的魅力值D_i(1 <= D_i <= 100)
。由于贝茜只能忍受重量不超过M(1 <= M <=
12,880)的手镯,她可能无法把所有喜欢的宝石都镶上