题干:

又见01背包

时间限制:1000 ms  |  内存限制:65535 KB

难度:3

输入

多组测试数据。
每组测试数据第一行输入,n 和 W ,接下来有n行,每行输入两个数,代表第i个物品的wi 和 vi。

输出

满足题意的最大价值,每组测试数据占一行。

样例输入

4 5
2 3
1 2
3 4
2 2

样例输出

7

来源

飘谊系列

上传者

TC_张友谊

描述

有n个重量和价值分别为wi 和 vi 的 物品,从这些物品中选择总重量不超过 W

的物品,求所有挑选方案中物品价值总和的最大值。

  1 <= n <=100

  1 <= wi <= 10^7

  1 <= vi <= 100

  1 <= W <= 10^9

解题报告:

因为这题w的数据量很大,显然开不下这么大的空间,但是反过来想,这题可以认为是在相同价值中更新所需背包容量最小的那一种,所以这题记录一下最大的价值v,然后以v为数组下标跑0-1背包就可以了。注意初始化问题哦,需要初始化成INF。

还有一道题跟这题很像:【 FZU - 2214 】Knapsack problem

AC代码:

#include<bits/stdc++.h>using namespace std;
const int INF = 0x3f3f3f3f;
int w[105],v[105];
int dp[10000 + 5];
int n,m;
int main()
{while(cin>>n>>m) {int sum = 0;for(int i = 1; i<=n; i++) {cin>>w[i]>>v[i];sum += v[i];}memset(dp,INF,sizeof(dp));dp[0] = 0;for(int i = 1; i<=n; i++) {for(int j = sum; j>=v[i]; j--) {dp[j] = min(dp[j],dp[j - v[i]] + w[i]) ;}}int ans = 0;for(int i = sum; i>=0; i--) {if(dp[i] <= m) {ans = i;break;} }cout << ans << endl;}return 0 ;} 

【nyoj - 860】 又见0-1背包 (dp,反向0-1背包,好题好思路)相关推荐

  1. NYOJ 860 又见01背包

    有n个重量和价值分别为wi 和 vi 的 物品,从这些物品中选择总重量不超过 W  的物品,求所有挑选方案中物品价值总和的最大值. 1 <= n <=100 1 <= wi < ...

  2. 51Nod-1101 换零钱【0/1背包+DP】

    1101 换零钱 基准时间限制:1秒 空间限制:131072KB 分值:20难度:3级算法题 N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100 ...

  3. 【背包dp】自然数拆分Lunatic版

    Tyvj 1172 自然数拆分Lunatic版 题意:给定一个自然数n(1<= n <= 4000), 要求把自然数n拆分成n个正整数相加的情况(正整数可以重复出现, 但顺序不同仍视为同一 ...

  4. 【LibreOJ】#6395. 「THUPC2018」城市地铁规划 / City 背包DP+Prufer序

    [题目]#6395. 「THUPC2018」城市地铁规划 / City [题意]给定n个点要求构造一棵树,每个点的价值是一个关于点度的k次多项式,系数均为给定的\(a_0,...a_k\),求最大价值 ...

  5. 杭电1284钱币兑换问题—背包dp/母函数(java)

    Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于32768. Out ...

  6. POJ2184 Cow Exhibition(DP:变种01背包)

    题意: 一群奶牛分别有s和f两个值,要求选出一些奶牛使s与f的和最大并且s和f分别的和不能为负数. 要点: 用dp[i]=j表示当s的和为i时f的和为j,这样最后只要求dp[i]+i的最大值即可.注意 ...

  7. CF946D Timetable 背包dp + 思维转换

    传送门 文章目录 题意: 思路: 题意: n,m,k≤500n,m,k\le500n,m,k≤500 思路: 将其转换成背包的模型,就可以想出来一个很明显的dpdpdp状态:f[i][j]f[i][j ...

  8. Codeforces 864E Fire(背包DP)

    背包DP,决策的时候记一下 jc[i][j]=1 表示第i个物品容量为j的时候要选,输出方案的时候倒推就好了 #include<iostream> #include<cstdlib& ...

  9. dp之二维背包poj1837(天平问题 推荐)

    题意:给你c(2<=c<=20)个挂钩,g(2<=g<=20)个砝码,求在将所有砝码(砝码重1~~25)挂到天平(天平长  -15~~15)上,并使得天平平衡的方法数..... ...

  10. 【bzoj4007】[JLOI2015]战争调度 暴力+树形背包dp

    题目描述 给你一棵 $n$ 层的完全二叉树,每个节点可以染黑白两种颜色.对于每个叶子节点及其某个祖先节点,如果它们均为黑色则有一个贡献值,如果均为白色则有另一个贡献值.要求黑色的叶子节点数目不超过 $ ...

最新文章

  1. hadoop-16-sqoop导入oracle数据
  2. HDU 1879(最小生成树问题,Prim)
  3. c语言字符串替换有大小写,(C语言)字符串大小写无关查找替换
  4. 用于Spring应用程序的Gradle原型
  5. android移动应用开发思维导图_这些地方应用思维导图就对了
  6. django多语言支持
  7. python编写makefile_Python项目中的Makefiles
  8. 浏览器打不开CSDN博客网站解决方法
  9. 企业如何布局数字化营销,打造私域运营闭环实现增长?
  10. Linux终端快捷键的使用
  11. 在一个窗体的panel控件中显示其他窗体
  12. 戴尔计算机亮度如何调整,官方数据:如何调整Dell显示器的亮度
  13. 使用Python横向合并excel文件的实例
  14. 胜为蓝牙适配器驱动_udc 324b蓝牙驱动下载|
  15. 金融科技方便生活,分布式架构助力微粒贷“闪电放款”
  16. HTML5期末大作业:影评网站的设计--豆瓣以及IMDb等影评网站
  17. figma的一些用法(一)
  18. 在apache和php安装之后进行连接配置,
  19. OCR光学字符识别(一)
  20. 如何深入学习JAVA

热门文章

  1. [攻防世界][CTF][2020][MISC] 攻防世界 MISC writeup
  2. 轻量级锁_并发编程实战05:锁的状态
  3. 浙江省计算机二级excel函数,浙江省计算机二级excel练习5操作要求
  4. 注册登录页面代码用js判断是否填入信息_php实现登录功能
  5. C#中宏定义#define、预处理#if #else #endif的使用
  6. 计算机找不到管理无线网络,电脑wifi密码忘了 并且找不到管理无线网络该怎么处理?...
  7. html 微信发送给朋友,H5链接分享给微信好友,显示标题、描述、缩略图
  8. arm for asterisk1.8
  9. 实例解析linux内核I2C体系结构(1)
  10. efishell无法开机shell_开机出现efi shell卡住不动了解决方法全集