特长生模拟 采药(dp,背包)
2017-05-21 20:16
453 查看
题1、采药
问题描述凡凡是个聪明的孩子,今天他也要去采药,但是这次和聪聪不一样,他采的药是密度很大的,所以不仅要求背包的总空间V能放得下所采的药,还要求药草的总质量不能超过凡凡所能承受的范围M。
由于凡凡运动力惊人并且拥有敏锐的察觉力,所以他能发现N种珍惜的药材,对于每个药材凡凡都会精准地目测出其质量、体积和价值,现在要你做出一些取舍,使凡凡所能采到的药材的总价值最大。
注意:每种药材只有一个。
问题输入
第一行有三个整数M、V、N。
接下来有N行,每行三个整数,分别表示一种药材的质量、体积、价值。
问题输出
一行一个数,表示能获得的最大价值。
分析:一看就知道是个二维费用背包,f[j,k]表示质量为j,体积为k时的最大价值,f[j,k]=max(f[j,k],f[j-m[i],k-v[i]]+c[i])
代码
const maxn=1000; var a,b,c:array[0..maxn] of longint; f:array[0..maxn,0..maxn] of int64; i,j,k,n,m,v:longint; function max(x,y:int64):int64; begin if x>y then exit(x) else exit(y); end; begin assign(input,'medic.in');reset(input); assign(output,'medic.out');rewrite(output); readln(m,v,n); for i:=1 to n do readln(a[i],b[i],c[i]); for i:=1 to n do for j:=m downto a[i] do for k:=v downto b[i] do f[j,k]:=max(f[j,k],f[j-a[i],k-b[i]]+c[i]); writeln(f[m,v]); close(input);close(output); end.
相关文章推荐
- SSL2454 NOIP2015提高组模拟题八 采药(背包dp)
- noip2005 一维采药---恰 (背包dp)
- 【DP背包问题1】 noi openjudge 2.6 采药
- 特长生模拟——采药
- [校内模拟]最优得分(背包DP)
- 【日常学习】【背包DP(完全背包)】洛谷1616 疯狂的采药题解
- 洛谷P1616 疯狂的采药(DP,完全背包)
- luogu1048 【2005普及】采药(背包dp)
- 洛谷P1048 采药(DP,0-1背包)
- tyvj 1005 采药 0-1背包 优化的一位数组 dp 代码1
- 夕拾算法进阶篇:19)采药 (01背包_动态规划DP)
- 采药(洛谷简单dp背包问题)
- 九度OJ 1123:采药 (01背包、DP、DFS)
- tyvj 1005 采药 0-1背包 优化的一位数组 dp 代码2
- 九度OJ 1123:采药 (01背包、DP、DFS)
- tyvj 1005 采药 0-1背包 优化的一位数组 dp 代码3
- hiho 1270 建造基地 dp 完全背包 模拟
- dp之多维背包hdu4501
- dp之二维背包poj2576
- (DP,二维背包)Watch The Movie--HDOJ