Bone Collector(骨头收集器) ---01背包 记录
问题描述
多年前,在泰迪的家乡,有一个人叫“骨头收藏家”。这个人喜欢收集各种各样的骨头,狗的,牛的,他也去坟墓了……
收集骨头的人有一个V体积的大袋子,在他收集的过程中,骨头有很多,显然,不同的骨头有不同的价值和不同的体积,现在给定每根骨头在旅途中的价值,你能计算出骨头收集器能得到的总价值的最大值吗?
输入
第一行包含一个整数 T ,即案例数。
后面是T个case,每个case三行,第一行包含两个整数N,V,(N <= 1000 , V <= 1000 )代表骨头的数量和他包的体积。第二行包含 N 个整数,表示每个骨骼的值。第三行包含 N 个整数,表示每个骨骼的体积。
输出
每行一个整数,表示总值的最大值(此数字将小于 2 31)。
样本输入
1
5 10
1 2 3 4 5
5 4 3 2 1
样本输出
14
思路:当前容量下,选或者不选当前物品
// 第i个物品j的容量下, w[i]第i个物品的"大小", v[i]第i个物品的价值// 选择当前物品 不选当前物品
dp[i][j] = max(dp[i - 1][j - w[i]] + v[i], dp[i - 1][j]);
//降维,为了避免覆盖之前的数据,容量从后往前遍历
for(int i = 0; i < n; i++) {for(int j = W; j >= w[i]; j--) { // 只需要到w[i], 在减少,一定不可能dp[j] = max(dp[j], dp[j - w[i]] + v[i]);}
}
#include<bits/stdc++.h>
using namespace std;int T, N, V, c[1005], v[1005], dp[1005];
int main() {scanf("%d", &T);while(T--) {memset(c, 0, sizeof(c));memset(v, 0, sizeof(v));memset(dp, 0, sizeof(dp));scanf("%d %d", &N, &V);for(int i = 0; i < N; i++) scanf("%d", &c[i]);for(int i = 0; i < N; i++) scanf("%d", &v[i]);for(int i = 0; i < N; i++) // N个数量,遍历每个物品 for(int j = V; j >= v[i]; j--) { // j: 背包的体积 dp[j] = max(c[i] + dp[j - v[i]], dp[j]);//printf("dp[%d] = %d\n", j, dp[j]);} printf("%d\n", dp[V]);} return 0;
}
Bone Collector(骨头收集器) ---01背包 记录相关推荐
- hdu2602 骨头收集者 01背包 模板题
Bone Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- POJ 1293 - Duty Free Shop 01背包记录所选物品
裸的01背包.dp[x]只要是bool型记录当前空间是否可用.. 而为了找到用了哪些物品..dp[x]设置为int型..进行记录.. Program: #include<iostream> ...
- ☆【UVA - 624 】CD(dp + 0-1背包 + 记录路径)
题干: You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music ...
- 41 01背包 记录方案
Problem IInstalling AppsTime limit: 2 seconds Mobile radio telephone, public domainSandra recently b ...
- 【01背包记录路径】东东开车了
题面 东东开车出去泡妞(在梦中),车内提供了 n 张CD唱片,已知东东开车的时间是 n 分钟,他该如何去选择唱片去消磨这无聊的时间呢 假设: CD数量不超过20张 没有一张CD唱片超过 N 分钟 每张 ...
- Java8函数式编程(4)--collector(收集器)
enum Characteristics {/***指示collector是并发的.如果一个并发collector不是unordered,则只能并发应用到非排序数据源.*/CONCURRENT,/** ...
- Bone Collector(01背包问题-两种写法)
Many years ago , in Teddy's hometown there was a man who was called "Bone Collector". This ...
- Java8 Stream 自定义收集器Collector
在之前的例子中,我们都是使用Collectors的静态方法提供的CollectorImpl,为接口Collector<T, A, R>的一个实现类,为了自定义我们自己的Collector, ...
- java中函数是什么_[一] java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念...
本文是针对于java8引入函数式编程概念以及stream流相关的一些简单介绍 什么是函数式编程? java程序员第一反应可能会理解成类的成员方法一类的东西 此处并不是这个含义,更接近是数学上的函数 看 ...
最新文章
- 信息网络基础设施普遍薄弱,提防信息安全风险--央行副行长
- MySQL 切换数据库、用户卡死:“You can turn off this feature to get a quicker startup with -A“处理方法
- 毕业论文 | 便携式环境烟雾监测器(源码、电路图)
- vue 2个方法先后执行_4个简单靠谱的所得税节税方法,老板看完都批示财务执行...
- java 最大子数组_[剑指offer题解][Java]连续子数组的最大和
- WinXp系统中没有ChangeWindowMessageFilter这个函数
- cad快速看图能合并图纸吗_怎样才能把2张CAD图纸合并
- echarts中国地图,省市标注代码
- 财务报表分析是在分析什么?如何选择财务报表分析工具
- 前端性能优化(三)——浏览器九大缓存方法
- 视频、图像原理 设配选择 图像出入门概念理解
- [网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记
- centos7.9使用gn+ninja编译程序
- 那些年我们踩过的Hive坑
- 老司机 iOS 周报 #7
- 解析器生成器 ANTLR的详细介绍
- foobar2000隐藏桌面悬浮窗头像_如何解锁华为手机隐藏的超能力?
- Ios常用第三方框架(一)
- 单播、多播(主播)、广播简介
- 用友u8v12.5 踩坑笔记
热门文章
- base64转cer_[SSL证书].pfx格式和.Cer格式的区别以及格式互相转换
- 关于 Bitmap.createScaledBitmap(); 重新生成新的bitmap 问题
- 编程之美 1.6 买饮料问题
- 腾讯云轻量应用服务器、CVM云服务器和GPU云服务器价格表(2023版)
- 浏览器点击URL的响应过程
- 2012年半程最佳Android应用盘点
- blankcount函数python,Python pandas常用函数详解
- [英语单词]retire
- scrapy模拟浏览器翻页爬取智联
- 前端程序员进阶到大神必备的7本前端书籍