有n个重量和价值分别为wi 和 vi 的 物品,从这些物品中选择总重量不超过 W 
的物品,求所有挑选方案中物品价值总和的最大值。
1 <= n <=100
1 <= wi <= 10^7
1 <= vi <= 100
1 <= W <= 10^9
输入
多组测试数据。
每组测试数据第一行输入,n 和 W ,接下来有n行,每行输入两个数,代表第i个物品的wi 和 vi。
输出
满足题意的最大价值,每组测试数据占一行。
样例输入
4 5
2 3
1 2
3 4
2 2
样例输出
7思路:由于重量太大不可能开重量的数组,所以我们可以这样考虑,求当前价值下的最小重量,这样的话问题就简单解决了;
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 using namespace std;
 6 const int MAX = 0x3fffffff;
 7 const int N = 1e4+10;
 8 struct T
 9 {
10     int wi,vi;
11 }ma[110];
12 long long dp[N];
13 int main()
14 {
15     int n , W, M;
16     while(scanf("%d %d",&n,&W) !=EOF)
17     {
18         M = 0;
19        fill(dp,dp+N,MAX);
20         for(int i = 1;i<=n ; i++)
21         {
22             scanf("%d%d",&ma[i].wi,&ma[i].vi);
23             M = ma[i].vi + M;
24         }
25         dp[0] = 0;
26         //常用的01背包
27        for(int i = 1; i<=n; i++)
28           for(int j = M; j>=ma[i].vi; j--)
29           {
30             dp[j] = min(dp[j],dp[j-ma[i].vi]+ma[i].wi);
31           }
32           int ans = 0;
33           for(int i = M; i>=0; i--)
34           {
35               if(dp[i]<=W) {ans = i;break;}//从最大的价值开始遍历,最大价值不会超过1w
36           }
37           printf("%d\n",ans);
38     }
39     return 0;
40 }

转载于:https://www.cnblogs.com/lovychen/p/4424016.html

NYOJ 860 又见01背包相关推荐

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

    题干: 又见01背包 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 输入 多组测试数据. 每组测试数据第一行输入,n 和 W ,接下来有n行,每行输入两个数,代表第i个物品的 ...

  2. nyoj 203 三国志 dijkstra+01背包

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=203 思路:先求点0到每个点的最短距离,dijkstra算法,然后就是01背包了 我奇怪的 ...

  3. NYOJ 289 苹果(01背包)

    苹果 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 ctest有n个苹果,要将它放入容量为v的背包.给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值. 输 ...

  4. 【 FZU - 2214 】Knapsack problem(逆向0-1背包)

    题干: Given a set of n items, each with a weight w[i] and a value v[i], determine a way to choose the ...

  5. Jam's balance HDU - 5616 (01背包基础题)

    Jim has a balance and N weights. (1≤N≤20) The balance can only tell whether things on different side ...

  6. 【01背包】最大约数和(jzoj 2126)

    最大约数和 题目大意: 选若干个正整数,和不小于S,使每个数的因数(不包括本身)之和最大 样例输入 11 样例输出 9 数据范围限制 对于30%的数据, S<=10: 对于100%的数据, S ...

  7. 【NOIP2006】【Luogu1060】开心的金明(01背包模板)

    problem 有n个物品,价格为wi, 重要度为vi. 在代价不超过m的情况下,最大化wi*vi的值 n < 30, m < 3e4 solution Qwq,Wi*Vi是确定的. 所以 ...

  8. 01背包总结+传授个人经验

    写在前面: 自从学了背包这个专题,感觉永远也写不完,之前写了三种类型的01背包,结果现在发现都是简单的01背包.后来又学了多重背包.完全背包,其中多重背包还可以进行二进制优化. 本文将对这几种常见的背 ...

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

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

最新文章

  1. 搜索引擎惩罚的五种最大原因
  2. jquery.form 和MVC4做无刷新上传DEMO
  3. ubuntu彻底卸载软件
  4. 流氓ONU问题分析和处理
  5. OpenCV3.1.0+VS2015开发环境配置
  6. x86汇编语言——基本概念
  7. Linux下tomcat无法启动/启动后无法用过127.0.0.1:8080访问解决方案
  8. 遇到一个valgrind自身的bug
  9. VC6.0的工程设置解读Project--Settings
  10. Python urllib – Python 3 urllib
  11. 苹果mac专业音频处理软件:Audition
  12. IO负载高的来源定位
  13. 为什么Stc-isp一直在检测单片机
  14. 关于attachEvent与addEventListener事件绑定兼容问题
  15. Android多进程从头讲到尾,成功定级腾讯T3-2
  16. word删除页眉线,添加第几页共几页
  17. 解决tomcat在pycharm中的初始化报错“ Failed to transfer file”“could not create folder”“(Permission denied)”
  18. 荣耀70什么时候发布 荣耀70发布时间曝光
  19. 合肥市直计算机知识pdf,事业单位计算机专业知识整理(全)-20210419115129.pdf-原创力文档...
  20. Mac无法安装第三方软件

热门文章

  1. 面经:为了拿到字节跳动offer,鬼知道我经历了啥...
  2. SpringBoot第七篇:springboot开启声明式事务
  3. 这是一份不完整的数据竞赛年鉴
  4. Nature | 复旦大学把衣服变成了显示器,能聊天能导航,水洗弯折都不怕
  5. 使用谷歌Colab Notebooks,这6个小技巧你需要掌握
  6. 陶哲轩之后,有人在这个猜想的证明之路上又前进了一步
  7. 福利,PyTorch中文版官方教程来啦(附下载)
  8. 重磅:2019年全国普通高校学科竞赛排行榜出炉!
  9. leveldb源码分析:数据查询
  10. Python3.5源码分析-sys模块及site模块导入