http://acm.hdu.edu.cn/showproblem.php?pid=3449

这个题AC的有点稀里糊涂(是1A过的),采用的01背包的方法;

思路:定义了两个数组用来存储最终结果和但购买这一组的篮子是的价值,然后a[j]=max(a[j],b[j-link[i].pi]);

把最终结果给a[],每次找完一组的时候更新一下;

View Code

 1 #include<iostream> 2 #include<cstring> 3 #include<algorithm> 4 #include<cstdlib> 5 #include<cstdio> 6 using namespace std; 7 int a[100010],b[100010]; 8 struct node 9 {10     int pi;11     int num;12     int price[15];13     int vlaue[15];14 }link[55];15 int main()16 {17     int n,s,i,j,k;18     while(scanf("%d%d",&n,&s)!=EOF)19     {20         for(i=0;i<=s;i++)21         a[i]=b[i]=0;22        for(i=1;i<=n;i++)23        {24         scanf("%d%d",&link[i].pi,&link[i].num);25         for(j=1;j<=link[i].num;j++)26         scanf("%d%d",&link[i].price[j],&link[i].vlaue[j]);27        }28        for(i=1;i<=n;i++)29        {30            for(j=0;j<=s;j++)31            b[j]=a[j];32            for(j=1;j<=link[i].num;j++)33            for(k=s;k>=link[i].price[j];k--)34            if(b[k]<b[k-link[i].price[j]]+link[i].vlaue[j])35            b[k]=b[k-link[i].price[j]]+link[i].vlaue[j];36            for(j=s;j>=link[i].pi;j--)37            {38                a[j]=max(a[j],b[j-link[i].pi]);39            }40        }41        printf("%d\n",a[s]);42     }43 }

转载于:https://www.cnblogs.com/LT-blogs/archive/2011/11/25/2263838.html

hdu 3449 Consumer 01背包相关推荐

  1. HDU 2639(01背包求第K大值)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2639 Bone Collector II Time Limit: 5000/2000 MS (Jav ...

  2. HDU - 3466(01背包理解)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3466 题意:给你一些钱 m ,然后在这个国家买东西, 共有 n 件物品,每件物品价格P价值V还有一个很 ...

  3. 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 ...

  4. hdu 5501(贪心+01背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5501 现在有A1,B1,C1和A2,B2,C2这两道题,如果先做1再做2的得分是A1-B1*C1+A2 ...

  5. hdu 1881(简单01背包)

    毕业bg Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Des ...

  6. HDU 3449 Consumer

    这是一道依赖背包问题. 背包问题通常的解法都是由0/1背包拓展过来的,这道也不例外. 我最初想到的做法是,由于有依赖关系,先对附件做个DP,得到1-w的附件背包结果f[i]表示i花费得到的最大收益,然 ...

  7. HDu 3449 (有依赖的01背包) Consumer

    题意: 有n件物品,对应有不同的价格和价值,这是典型的01背包.但现在有了一个限制,要买物品先买能装这件物品的特定的盒子,盒子的价值为0 代码理解得还不是太好,感觉这是一个"二重" ...

  8. hdu 3449 有依赖性的01背包

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3449 Consumer Description FJ is going to do som ...

  9. hdu 3732(01背包转多重背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3732 思路:这么大的数据,用01背包肯定会TLE的,01背包转多重背包..最多也就11*11=121件 ...

最新文章

  1. 后疫情时代怎么办?来看看联想的智慧答卷
  2. Spring WebFlux和Spring Cloud开发响应式微服务
  3. 玩斗地主明白的7个道理
  4. Hystrix 熔断器02 —— hystrix 案例之高并发测试
  5. 可以用javascript实现的10种图片特效
  6. Linux-重装系统之静态ip配置
  7. java中session对象登录_JavaWeb中Session对象的学习笔记
  8. 原来搞单片机也可以面向对象
  9. python面向对象类创建人物类包含姓名、职业_python面向对象类
  10. 2016年 1月15号 cocoapods的导入
  11. 【编译原理笔记10】语法制导翻译:在递归预测过程中进行翻译,L属性定义的自底向上翻译
  12. .NET程序员面试指南:设计窗口程序演示八皇后问题
  13. 51单片机智能循迹小车的通俗易懂讲解
  14. 创新洞见|2023年B2B业务为何必须采用PLG增长策略
  15. 扇区 物理块 逻辑块 flash 基础概念
  16. linux动态压缩硬盘,VirtualBox 压缩VDI硬盘
  17. BC35 RAI功能应用
  18. Excel怎么快速计算人数
  19. RPM(软件包管理器)和YUM 软件仓库
  20. 【代码随想录二刷】day9 | 28. 实现 strStr() 459.重复的子字符串

热门文章

  1. MIT:机器学习预测2018世界杯冠军
  2. 三大国有银行同时入股 AI 公司第四范式
  3. 做木匠、开烘焙店、写科幻小说,那些选择转行的开发者们…
  4. 假如易立竞吐槽程序员......
  5. 《互联网人求职图鉴》:这类人才“最吃香”,最高薪编程语言出炉!
  6. 一个仿微信朋友圈的图片查看框架 - PhotoViewer
  7. AOP埋点从入门到放弃(二)
  8. Centos6.5安装Seafile,遇到的问题处理记录。
  9. Kupu,“document-centric”的开放源码的客户端文本编辑器
  10. 杭电 1272 poj 1308 小希的迷宫