特长生模拟 采药(dp,背包)
来源:互联网 发布:拼音域名 编辑:程序博客网 时间:2024/05/21 06:57
题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.
阅读全文
0 0
- 特长生模拟 采药(dp,背包)
- 特长生模拟——采药
- SSL2454 NOIP2015提高组模拟题八 采药(背包dp)
- luogu1048 【2005普及】采药(背包dp)
- 特长生模拟 BIOtech(模拟)
- noip2005 一维采药---恰 (背包dp)
- 九度OJ 1123:采药 (01背包、DP、DFS)
- 采药(洛谷简单dp背包问题)
- 洛谷P1048 采药(DP,0-1背包)
- 洛谷P1616 疯狂的采药(DP,完全背包)
- 特长生模拟 Array(水)
- 特长生模拟 Distinct (二分)
- 采药 (背包)
- 采药(01背包)
- 采药(01背包)
- 背包(采药)
- 采药---0-1背包型dp
- 采药 水题 dp 01背包问题 luogu1048
- C++类构造函数初始化列表
- 判断机器的大小端
- [java]-[并发编程]
- 使用SpringMVC配合jQuery文件上传插件ssi-uploader实现多图片可预览上传
- C. 城市重建
- 特长生模拟 采药(dp,背包)
- 【bzoj3224】Tyvj 1728 普通平衡树
- weka之初窥Instances类
- B. 完美对称
- extern略记
- CodeForces
- A. 奇数和
- 串口通信小结
- 关于二分查找法的一些问题