对于每个物品,如果购买,价值为A[i]*x+B[i]的背包问题。

  先写了一发是WA的= =。代码如下:

 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <string.h>
 4 #include <set>
 5 using namespace std;
 6 typedef pair<int,int> pii;
 7
 8 pii dp[2005];
 9 int w[1005],A[1005],B[1005];
10
11 int main()
12 {
13     int T;scanf("%d",&T);
14     while(T--)
15     {
16         int m,n;scanf("%d%d",&m,&n);
17         for(int i=1;i<=n;i++) scanf("%d%d%d",w+i,A+i,B+i);
18         for(int i=0;i<=m;i++) dp[i] = pii(0,0);
19         for(int i=1;i<=n;i++)
20         {
21             for(int j=0;j<=m;j++) dp[j] = pii(dp[j].first, 0);
22             for(int j=w[i];j<=m;j++)
23             {
24                 if(dp[j-w[i]].first + A[i] + (dp[j-w[i]].second == 0 ? B[i] : 0) > dp[j].first)
25                 {
26                     dp[j].first = dp[j-w[i]].first + A[i] + (dp[j-w[i]].second == 0 ? B[i] : 0);
27                     dp[j].second = 1;
28                 }
29             }
30         }
31         printf("%d\n",dp[m].first);
32     }
33     return 0;
34 }

  

  正解是,先跑一遍价值为A[i]+B[i]的01背包,再跑一遍价值为A[i]完全背包。所以上面的代码错了大概是因为,这两个背包的第二个for的方向是不同的,没办法一起跑吧(除非用另外一组变量记录下到前一个为止的dp值,然后就可以同时跑了)。。对背包问题的理解还是不够深啊。。

————————————————————————————————————————————————————————

  想了一下,感觉上面说的括号里的再用一个数组记录的方法貌似不太对。。虽然那份代码AC了- -。。反正跑两遍的方法肯定是对的。。我说的是这个博客里面的第二个方法:http://www.cnblogs.com/wmxl/p/4749780.html。也有可能是我对完全背包的理解不够深刻。。先放着再说好了。。

————————————————————————————————————————————————————————

  AC代码如下:

 1 #include <stdio.h>
 2 #include <algorithm>
 3 #include <string.h>
 4 #include <set>
 5 using namespace std;
 6 typedef pair<int,int> pii;
 7
 8 int dp[2005];
 9 int w[1005],A[1005],B[1005];
10
11 int main()
12 {
13     int T;scanf("%d",&T);
14     while(T--)
15     {
16         int m,n;scanf("%d%d",&m,&n);
17         for(int i=1;i<=n;i++) scanf("%d%d%d",w+i,A+i,B+i);
18         memset(dp,0,sizeof(dp));
19         for(int i=1;i<=n;i++)
20         {
21             for(int j=m;j>=w[i];j--) dp[j] = max(dp[j], dp[j-w[i]] + A[i] + B[i]);
22             for(int j=w[i];j<=m;j++) dp[j] = max(dp[j], dp[j-w[i]] + A[i]);
23         }
24         printf("%d\n",dp[m]);
25     }
26     return 0;
27 }

转载于:https://www.cnblogs.com/zzyDS/p/6188175.html

HDU 5410 CRB and His Birthday ——(完全背包变形)相关推荐

  1. HDU 5410 CRB and His Birthday

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5410 Problem Description Today is CRB's birthday. His ...

  2. codeforce Gym 101102A Coins (01背包变形)

    01背包变形,注意dp过程的时候就需要取膜,否则会出错. 代码如下: #include<iostream> #include<cstdio> #include<cstri ...

  3. P1734 最大约数和 01背包变形

    传送门 思路:01背包变形题.将i看成重量,i的因子看成价值即可.背包自然是s. /** * From: * Qingdao Agricultural University * Created by ...

  4. HDU Problem 2062 Bone Collector【01背包】

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

  5. hdu 5410(背包问题变形)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5410 解题思路:令dp[i][j][0]表示前i种物品,共j钱,不买第i种物品所能买到的最大值.dp[ ...

  6. 5410 ACM 杭电 01+完全背包

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5410 虽然是英文题目:但还是很好理解的.明显的背包问题 思路:如果你能想到把题目拆分成小问题,就会简单许多 ...

  7. HDU 2546 饭卡 01背包变形

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  8. hdu 2546 饭卡【贪心+01背包基础题】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=2546 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  9. HDU 1114—Piggy-Bank(储蓄罐)(完全背包)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 题意 开始时输入T,代表一共有T个样例. 对于每一个样例,第一行给出E与F(1<=E,F< ...

最新文章

  1. 微信读书vscode插件_快来!让这款 VSCode 插件吹爆你的彩虹屁!
  2. sqlserver怎么查看索引_Sql Server之旅——第六站 为什么都说状态少的字段不能建索引...
  3. 实测:xml与json速度约差4倍
  4. php 文件扫描去重,PHP中的去重方法详解和文件下载
  5. EntityFramework 7 OrderBy Skip Take-计算排序分页 SQL 翻译
  6. mysql程序设计排球比赛_Jsp+Ssh+Mysql实现的排球馆预约管理系统项目源码附带视频指导运行教程...
  7. vue 前期准备,项目结构
  8. Ubuntu创建快捷方式
  9. 开源监控系统------Zabbix
  10. Hibernate学习资源
  11. Java安全生态-Java加解密API详解-Java安全框架官方文档翻译:对称/非对称加密、数字签名、数字证书、安全通信、密钥库等
  12. 如何用Qlikview在dashboard中创建条形图时,统计时忽略空值
  13. 【MineCraft】-- 如何开设我的世界服务器
  14. 李德毅院士:大数据认知
  15. 果汁机器人传销_【调查】“洋果汁治百病”?然健环球涉嫌传销大起底
  16. [Baltic2008]Mafia
  17. 弘辽科技:拼多多直通车关键词推广问题的细说讲解
  18. 《一胜九败3》李彦宏百度在试错中前行-读书笔记
  19. 轻巧画图工具_Web的轻巧灵活的表格组件
  20. Python3.X 调用百度翻译API和有道翻译API

热门文章

  1. 命运2服务器维护时间2019,《命运2》今晚将停机维护 为多平台共用存档做准备...
  2. 使用github+jsdelivr作为视频床
  3. 多进程鱼多线程的权衡选择
  4. Linux(13)-文件权限,chmod
  5. Python(10)- 格式化输出%
  6. 《Java8实战》笔记(13):函数式的思考
  7. 小米用户画像_企鹅智库:高学历用苹果中老年用华为 男性用小米女性用OV
  8. iphone全部机型_iPhone 12 销量或创 iPhone 6 以来最高|iphone|郭明錤
  9. 数学建模1 赛前准备 赛题选择 查找文献
  10. 编程语言大比拼——谁的效率高