题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3732

思路:这么大的数据,用01背包肯定会TLE的,01背包转多重背包。。最多也就11*11=121件物品。。。

View Code

 1 #include<iostream>
 2 using namespace std;
 3 int dp[10010];
 4 int map[14][14];
 5 int n,m;
 6
 7 void CompletePack(int value,int cost){
 8     for(int j=cost;j<=m;j++){
 9         dp[j]=max(dp[j],dp[j-cost]+value);
10     }
11 }
12
13 void ZeroOnePack(int value,int cost){
14     for(int j=m;j>=cost;j--){
15         dp[j]=max(dp[j],dp[j-cost]+value);
16     }
17 }
18
19
20 int main(){
21     while(~scanf("%d%d",&n,&m)){
22         char str[14];
23         int a,b;
24         memset(dp,0,sizeof(dp));
25         memset(map,0,sizeof(map));
26         for(int i=0;i<n;i++){
27             scanf("%s%d%d",str,&a,&b);
28             map[a][b]++;//转化为物品的件数
29         }
30         for(int i=0;i<=10;i++){
31             for(int j=0;j<=10;j++){
32                 if(map[i][j]*j>=m){
33                     CompletePack(i,j);//件数*花费>=总花费,完全背包
34                 }else {
35                     //0-1背包
36                     int k=1;
37                     while(k<map[i][j]){
38                         ZeroOnePack(i*k,j*k);
39                         map[i][j]-=k;
40                         k*=2;
41                     }
42                     ZeroOnePack(i*map[i][j],j*map[i][j]);
43                 }
44             }
45         }
46         printf("%d\n",dp[m]);
47     }
48     return 0;
49 }

hdu 3732(01背包转多重背包)相关推荐

  1. 背包问题教程-01背包,完全背包,多重背包,混合背包 收藏

    P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 基本思路 这是最基础的背包问题,特点是:每种物品仅有 ...

  2. 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包

    动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包 01背包 && 完全背包 && 分组背包 の 视频教程:https://www.bilibi ...

  3. 01背包输出路径、完全背包、多重背包

    背包问题 一.01 Knapsack(输出路径- >选的物品) 二.完全背包 1.三重循环,极可能TLE,滚动数组优化后j逆向枚举 2.二重,优化消去变量k(没有特别厘清,但可以直接从完全背包角 ...

  4. 01背包模板、全然背包 and 多重背包(模板)

    转载请注明出处:http://blog.csdn.net/u012860063 贴一个自觉得解说不错的链接:http://www.cppblog.com/tanky-woo/archive/2010/ ...

  5. 【HDU 1059】Dividing(多重背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1059 题意:有6种物品,价值分别是1,2,3,4,5,6,每种物品有n[ i ]个,,问是否能将其平分 ...

  6. 01背包模板、完全背包 and 多重背包

    转载请注明出处:http://blog.csdn.net/u012860063 讲解链接:http://www.cppblog.com/tanky-woo/archive/2010/07/31/121 ...

  7. 背包模型dp1:01背包,完全背包,多重背包的两大优化的详解

    01背包问题: 状态表示:f[i][j]表示从只从前i个物体里面选,切总体积不超过j的选法的集合状态表示:f[i][j]表示从只从前i个物体里面选,切总体积不超过j的选法的集合状态表示:f[i][j] ...

  8. 动态规划-----------01背包,完全背包与多重背包

    P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 基本思路 这是最基础的背包问题,特点是:每种物品仅有 ...

  9. 01背包,完全背包,多重背包,分组背包的使用条件以及代码模板

    背包问题算是动态规划中的入门题目了,背包问题有很多种.背包九讲中讲的很清楚,我就不班门弄斧了,针对几种比较常见的背包问题,阐述一下它的使用前提和代码模板. 1.01背包问题 题目 有N 件物品和一个容 ...

最新文章

  1. java socket输入流_java – Socket输入流挂在最后读取.最好的办法呢?
  2. 豪横!程序员搭个人博客,一个 GitHub 账号足矣!
  3. hal库开启中断关中断_stm32的HAL库开发学习笔记之外部中断
  4. JavaScript --- [学习笔记]观察者模式 理解对象 工厂模式 构造函数模式
  5. 这样学英语三个月超过你过去学三年
  6. 基于Fork/Join框架实现对大型浮点数数组排序(归并算法和插入排序算法) 1
  7. java 邮件内嵌图片_(二)JavaMail创建包含内嵌图片的邮件
  8. 博图中fb与多重背景数据块_STEP7中如何生成和更新多重背景?
  9. xbox 手柄按键测试软件,unity中链接Xbox手柄设置及按键检测
  10. es数据定时清理_elasticsearch索引自动清理
  11. 单因素方差分析及其相关检验
  12. CDP营销方案 不仅仅是数据整合
  13. less混合 + less计算
  14. centso系统命令来源查询
  15. linux内核 quota,Linux系统磁盘配额(quota)
  16. C++17尝鲜:fold expression(折叠表达式)
  17. linux下磁盘坏道修复,linux磁盘坏道修复记录
  18. java geojson和数据库_GeoJson和TopoJson数据格式的对比
  19. 手游测试(测试内容、测试流程、测试用例)
  20. 微博爬虫及简单数据分析

热门文章

  1. 虚拟机无法访问主机mysql_解决虚拟机linux端mysql数据库无法远程访问
  2. libgdx和android界面结合,Android游戏引擎libgdx使用教程5:常用UI类与舞台
  3. 全国大学生智能猫竞速比赛
  4. 无线节能组信标为什么会自动切换? 排查故障的过程真的像谜一样无法解释
  5. 液晶模块 LM6063A接口转接
  6. 全自动STC下载电路设计
  7. python中scale的用法_Python Decimal scaleb()用法及代码示例
  8. python获取文件的大小_python获取文件大小
  9. java 字符串写入word,JAVA 将字符串hollow 替换成word肿么实现?
  10. mysql 返回的查询结果为空 (即零行)._Mysql数据同步(单向)