7-1 真实的背包故事 (17 分)
7-1 真实的背包故事 (17 分)
题目大意
0-1背包问题是经典的动态规划问题,这个问题大多用这样的故事开场:一个小偷溜进了一家博物馆,博物馆里排列着N件珍稀古董,每件古董都有重量和价值,而小偷带来的背包有重量限制W。因此,小偷的目的就是要选择部分古董,使其总重量不超过W且总价值最大。这故事听上去就像小偷在逛超市一样能轻松自如地挑选,而真实的情况是小偷提心吊胆,尤其是每拿下一件古董,随时都有触动警报的危险,所以小偷想尽可能少带几件古董立马跑路,但他的职业“素养”又不允许他不把背包装满。你能帮他解决这个困境吗?
输入格式
第一行中给出2个整数值N和W, 其中1<N≤100表示古董的数量,1<W≤2000表示背包的重量限制。 接下来N行数据,每行两个正整数。第i行(1≤i≤N)的整数vi和wi分别表示第i件古董的价值和重量。vi和wi 的值均不超过2000。
输出格式
在一行中输出两个整数值,用空格分开。第一个整数表示装背包能获得的最大总价值,第二个整数表示在获得最大价值的条件下装入背包里的古董的最少数量。
输入样例
6 6
1 1
2 2
3 3
4 4
5 5
6 6
结尾无空行
输出样例:
在这里给出相应的输出。例如:
6 1
结尾无空行
基本思路
简单的0-1背包问题,可以直接套用背包问题模板解决。具体数据结构和详细思路请看代码注释。
代码
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int N,W;//古董数量,背包重量限制
int vi[105],wi[105];//v[i]代表第i件古董的价值,w[i]代表第i件古董的重量
int dpv[2005];//滚动数组:阶段数隐含,dpv[j]代表在第i个阶段下重量限制为j的背包所能获得的最大价值
int dpn[2005];//滚动数组:阶段数隐含,dpn[j]代表在第i个阶段下重量限制为j的背包所能获得最大价值的情况下的最少物品件数
int main(){cin>>N>>W;for(int i=1;i<=N;i++) cin>>vi[i]>>wi[i];//初始化递推边界memset(dpv,0,sizeof(dpv));//0件物品放入任何重量限制的背包所能获得的最大价值都是0memset(dpn,0,sizeof(dpn));//0件物品房屋任何重量限制的背包所能获得的最大价值都是0,最少物品件数自然就是0//状态转移方程for(int i=1;i<=N;i++){for(int j=W;j>=wi[i];j--){if(dpv[j-wi[i]]+vi[i]>=dpv[j]){dpv[j]=dpv[j-wi[i]]+vi[i];dpn[j]=dpn[j-wi[i]]+1;}}}//输出cout<<dpv[W]<<" "<<dpn[W]<<endl;
}
7-1 真实的背包故事 (17 分)相关推荐
- PTA:真实的背包故事[动态规划]
PTA:真实的背包故事[动态规划] 题目 0-1背包问题是经典的动态规划问题,这个问题大多用这样的故事开场:一个小偷溜进了一家博物馆,博物馆里排列着N件珍稀古董,每件古董都有重量和价值,而小偷带来的背 ...
- 7-5 快乐的尽头 (17 分)
7-5 快乐的尽头 (17 分) 题目 快乐风男面前有n个兵,呈线性排列编号为1~n,每个小兵携带a[i]个金币1<=i<=1e5,为了体现快乐的极致,快乐风男知道了每个小兵携带的金币,快 ...
- 7-4 计算税率 (17 分)
7-4 计算税率 (17 分) 美国联邦个人所得税是根据申报情况和应纳税所得额计算的.有四种申报情况:单身申报.已婚联合申报.已婚单独申报.户主申报.税率每年都不一样.下表即为假定税率计算方法,例如, ...
- 分享一个程序猿的真实的爱情故事
分享一个程序猿的真实的爱情故事 在今天(农历四月十九日)这个特别的日子里,就不分享技术干货了.因为今天是我老婆的生日,所以我改成记录一下关于我这个"老"程序猿跟我老婆之间的故事.也 ...
- 68个经典小故事(17~32)
属于管理方面的知识,我会尽快地发到自己的BLOG上来的,今天就先发前面的17-32个.从小故事中领悟大道理. 十七.提醒自我 有个老太太坐在马路边望着不远处的一堵高墙,总觉得它马上就会倒塌,见有人向媾 ...
- pte模拟考试_PTE 模拟考和真实考试一般差多少分?
原则上,官方模考与正式考试使用的是相同的评分机制和相同的考核系统,和实际考试的考试形式.题型.时间.评分标准都特别相似. 最大的不同就是几乎不会有机经出现,所以比正常考试低个10分左右,大家要有心里预 ...
- 放假了,讲个真实的转岗故事
大家好啊,我是董董灿. 难得周中放了一天假,过了明天后天,又要过礼拜了,这周是真的幸福. 前天给自己立了个实战项目--<从零手写Resnet50>,这两天抽时间把Resnet50的模型,利 ...
- 真实的爱情故事。。。
这篇比较八卦.我好像还没有八卦过. 晚上照例看一下blog订阅,发现mvm已经到纽约了.预感到,这个家伙也要开始飘泊了?(为什么说"也"呢?) 这一期的<申江服务导报> ...
- PAT_B_1065_Java(17分)_C++(25分)
import java.io.*; import java.util.*;public class Main {public static void main(String[] args) throw ...
最新文章
- suse linux mysql_SUSE Linux 下 MySQL集群配置
- flask-blueprint的简单使用
- Java 完美实现添加、读取和删除 Excel 批注
- dedecms原理及使用
- 使用NW.js封装微信公众号菜单编辑器为桌面应用
- 计算机基础知识数据结构与算法,(计算机基础知识)[数据结构与算法] 图
- vue跳转页面增加等待_vue跳转页面方法
- java ready_Java PushbackReader ready()用法及代码示例
- oracle获取登录名,oracle如何获取当前登录的用户名
- 如何使用Aimersoft iMusic for Mac从 Android 手机备份歌曲到 PC/Mac?
- linux内核驱动之 设备驱动简介之内核划分
- 致谢计算机组成原理老师的致谢,计算机组成原理课程报告(40页)-原创力文档...
- JavaScript-预解析(变量提升)
- BZOJ 2763 飞行线路
- kibana的query string syntax 笔记
- callmode php_phper必须了解的php常识
- 【100个 Unity踩坑小知识点】| Unity调用API ,动态获取Android权限,附带所有Android权限表格
- 中专高一第一学期计算机应用期中基础考题,职业中专第一学期计算机应用基础WIN7和Word2010版期末考试题...
- 降低指定进程的CPU占用率(适合游戏多开)
- 后台模板vue-admin-template的安装