问题描述
多年前,在泰迪的家乡,有一个人叫“骨头收藏家”。这个人喜欢收集各种各样的骨头,狗的,牛的,他也去坟墓了……
收集骨头的人有一个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背包 记录相关推荐

  1. hdu2602 骨头收集者 01背包 模板题

    Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  2. POJ 1293 - Duty Free Shop 01背包记录所选物品

    裸的01背包.dp[x]只要是bool型记录当前空间是否可用.. 而为了找到用了哪些物品..dp[x]设置为int型..进行记录.. Program: #include<iostream> ...

  3. ☆【UVA - 624 】CD(dp + 0-1背包 + 记录路径)

    题干: You have a long drive by car ahead. You have a tape recorder, but unfortunately your best music ...

  4. 41 01背包 记录方案

    Problem IInstalling AppsTime limit: 2 seconds Mobile radio telephone, public domainSandra recently b ...

  5. 【01背包记录路径】东东开车了

    题面 东东开车出去泡妞(在梦中),车内提供了 n 张CD唱片,已知东东开车的时间是 n 分钟,他该如何去选择唱片去消磨这无聊的时间呢 假设: CD数量不超过20张 没有一张CD唱片超过 N 分钟 每张 ...

  6. Java8函数式编程(4)--collector(收集器)

    enum Characteristics {/***指示collector是并发的.如果一个并发collector不是unordered,则只能并发应用到非排序数据源.*/CONCURRENT,/** ...

  7. Bone Collector(01背包问题-两种写法)

    Many years ago , in Teddy's hometown there was a man who was called "Bone Collector". This ...

  8. Java8 Stream 自定义收集器Collector

    在之前的例子中,我们都是使用Collectors的静态方法提供的CollectorImpl,为接口Collector<T, A, R>的一个实现类,为了自定义我们自己的Collector, ...

  9. java中函数是什么_[一] java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念...

    本文是针对于java8引入函数式编程概念以及stream流相关的一些简单介绍 什么是函数式编程? java程序员第一反应可能会理解成类的成员方法一类的东西 此处并不是这个含义,更接近是数学上的函数 看 ...

最新文章

  1. 信息网络基础设施普遍薄弱,提防信息安全风险--央行副行长
  2. MySQL 切换数据库、用户卡死:“You can turn off this feature to get a quicker startup with -A“处理方法
  3. 毕业论文 | 便携式环境烟雾监测器(源码、电路图)
  4. vue 2个方法先后执行_4个简单靠谱的所得税节税方法,老板看完都批示财务执行...
  5. java 最大子数组_[剑指offer题解][Java]连续子数组的最大和
  6. WinXp系统中没有ChangeWindowMessageFilter这个函数
  7. cad快速看图能合并图纸吗_怎样才能把2张CAD图纸合并
  8. echarts中国地图,省市标注代码
  9. 财务报表分析是在分析什么?如何选择财务报表分析工具
  10. 前端性能优化(三)——浏览器九大缓存方法
  11. 视频、图像原理 设配选择 图像出入门概念理解
  12. [网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记
  13. centos7.9使用gn+ninja编译程序
  14. 那些年我们踩过的Hive坑
  15. 老司机 iOS 周报 #7
  16. 解析器生成器 ANTLR的详细介绍
  17. foobar2000隐藏桌面悬浮窗头像_如何解锁华为手机隐藏的超能力?
  18. Ios常用第三方框架(一)
  19. 单播、多播(主播)、广播简介
  20. 用友u8v12.5 踩坑笔记

热门文章

  1. base64转cer_[SSL证书].pfx格式和.Cer格式的区别以及格式互相转换
  2. 关于 Bitmap.createScaledBitmap(); 重新生成新的bitmap 问题
  3. 编程之美 1.6 买饮料问题
  4. 腾讯云轻量应用服务器、CVM云服务器和GPU云服务器价格表(2023版)
  5. 浏览器点击URL的响应过程
  6. 2012年半程最佳Android应用盘点
  7. blankcount函数python,Python pandas常用函数详解
  8. [英语单词]retire
  9. scrapy模拟浏览器翻页爬取智联
  10. 前端程序员进阶到大神必备的7本前端书籍