【nyoj - 860】 又见0-1背包 (dp,反向0-1背包,好题好思路)
题干:
又见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背包,好题好思路)相关推荐
- NYOJ 860 又见01背包
有n个重量和价值分别为wi 和 vi 的 物品,从这些物品中选择总重量不超过 W 的物品,求所有挑选方案中物品价值总和的最大值. 1 <= n <=100 1 <= wi < ...
- 51Nod-1101 换零钱【0/1背包+DP】
1101 换零钱 基准时间限制:1秒 空间限制:131072KB 分值:20难度:3级算法题 N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100 ...
- 【背包dp】自然数拆分Lunatic版
Tyvj 1172 自然数拆分Lunatic版 题意:给定一个自然数n(1<= n <= 4000), 要求把自然数n拆分成n个正整数相加的情况(正整数可以重复出现, 但顺序不同仍视为同一 ...
- 【LibreOJ】#6395. 「THUPC2018」城市地铁规划 / City 背包DP+Prufer序
[题目]#6395. 「THUPC2018」城市地铁规划 / City [题意]给定n个点要求构造一棵树,每个点的价值是一个关于点度的k次多项式,系数均为给定的\(a_0,...a_k\),求最大价值 ...
- 杭电1284钱币兑换问题—背包dp/母函数(java)
Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于32768. Out ...
- POJ2184 Cow Exhibition(DP:变种01背包)
题意: 一群奶牛分别有s和f两个值,要求选出一些奶牛使s与f的和最大并且s和f分别的和不能为负数. 要点: 用dp[i]=j表示当s的和为i时f的和为j,这样最后只要求dp[i]+i的最大值即可.注意 ...
- CF946D Timetable 背包dp + 思维转换
传送门 文章目录 题意: 思路: 题意: n,m,k≤500n,m,k\le500n,m,k≤500 思路: 将其转换成背包的模型,就可以想出来一个很明显的dpdpdp状态:f[i][j]f[i][j ...
- Codeforces 864E Fire(背包DP)
背包DP,决策的时候记一下 jc[i][j]=1 表示第i个物品容量为j的时候要选,输出方案的时候倒推就好了 #include<iostream> #include<cstdlib& ...
- dp之二维背包poj1837(天平问题 推荐)
题意:给你c(2<=c<=20)个挂钩,g(2<=g<=20)个砝码,求在将所有砝码(砝码重1~~25)挂到天平(天平长 -15~~15)上,并使得天平平衡的方法数..... ...
- 【bzoj4007】[JLOI2015]战争调度 暴力+树形背包dp
题目描述 给你一棵 $n$ 层的完全二叉树,每个节点可以染黑白两种颜色.对于每个叶子节点及其某个祖先节点,如果它们均为黑色则有一个贡献值,如果均为白色则有另一个贡献值.要求黑色的叶子节点数目不超过 $ ...
最新文章
- hadoop-16-sqoop导入oracle数据
- HDU 1879(最小生成树问题,Prim)
- c语言字符串替换有大小写,(C语言)字符串大小写无关查找替换
- 用于Spring应用程序的Gradle原型
- android移动应用开发思维导图_这些地方应用思维导图就对了
- django多语言支持
- python编写makefile_Python项目中的Makefiles
- 浏览器打不开CSDN博客网站解决方法
- 企业如何布局数字化营销,打造私域运营闭环实现增长?
- Linux终端快捷键的使用
- 在一个窗体的panel控件中显示其他窗体
- 戴尔计算机亮度如何调整,官方数据:如何调整Dell显示器的亮度
- 使用Python横向合并excel文件的实例
- 胜为蓝牙适配器驱动_udc 324b蓝牙驱动下载|
- 金融科技方便生活,分布式架构助力微粒贷“闪电放款”
- HTML5期末大作业:影评网站的设计--豆瓣以及IMDb等影评网站
- figma的一些用法(一)
- 在apache和php安装之后进行连接配置,
- OCR光学字符识别(一)
- 如何深入学习JAVA
热门文章
- [攻防世界][CTF][2020][MISC] 攻防世界 MISC writeup
- 轻量级锁_并发编程实战05:锁的状态
- 浙江省计算机二级excel函数,浙江省计算机二级excel练习5操作要求
- 注册登录页面代码用js判断是否填入信息_php实现登录功能
- C#中宏定义#define、预处理#if #else #endif的使用
- 计算机找不到管理无线网络,电脑wifi密码忘了 并且找不到管理无线网络该怎么处理?...
- html 微信发送给朋友,H5链接分享给微信好友,显示标题、描述、缩略图
- arm for asterisk1.8
- 实例解析linux内核I2C体系结构(1)
- efishell无法开机shell_开机出现efi shell卡住不动了解决方法全集