題目鏈接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1086

題意:中文題誒~

思路:很顯然這是一道多重背包題,不過這裏的數據有點大,如果將物品一個一個地拆分爲開再用01背包做的話時間復雜度

爲O(n*w*ci)=200*5000*200=2e9,顯然是會超時的;

那麼不妨往二進制方向想一想,任何數都可以寫成:2^a1+2^a2+2^a3......

反之則有對於任意數 ci,0~ci的所有數都可以由 2^0, 2^1, 2^2.....2^m 中的羅幹個組合成,其中m爲ci的二進制長度...

那麼可以將ci分解成上述形式,再枚舉一下01背包即可...

代碼:

 #include <iostream>
#include <stdio.h>
using namespace std; const int MAXN=+;
int w[MAXN], v[MAXN], dp[(int)1e5+]; int main(void){
int n, m;
scanf("%d%d", &n, &m);
for(int i=; i<=n; i++){
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
int cnt=;
while(cnt<=c){
for(int j=m; j>=a*cnt; j--){
dp[j]=max(dp[j], dp[j-a*cnt]+b*cnt);
}
c-=cnt;
cnt<<=;
}
if(c){
for(int j=m; j>=c*a; j--)
dp[j]=max(dp[j], dp[j-c*a]+c*b);
}
}
printf("%d\n", dp[m]);
return ;
}

51nod1086(多重背包&二進制)的更多相关文章

  1. 背包问题(01背包,完全背包,多重背包(朴素算法&&二进制优化))

    写在前面:我是一只蒟蒻~~~ 今天我们要讲讲动态规划中~~最最最最最~~~~简单~~的背包问题 1. 首先,我们先介绍一下  01背包 大家先看一下这道01背包的问题  题目  有m件物品和一个容量为 ...

  2. POJ 1787 Charlie's Change (完全背包/多重背包,输出方案的物品个数)

    网上说是多重背包,因为要输出方案,还要记录下路径,百度一下题解就可以. 自己做的时候,还没了解过多重背包,该题直接往完全背包思考了.咖啡的钱看作总的背包容量,1.5.10.25分别代表四种物品的重量, ...

  3. hdu 2191多重背包

    悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  4. POJ 1472 Coins (多重背包+滚动数组)

    Coins Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 25827 Accepted: 8741 Description Pe ...

  5. hdu1059(多重背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1059 题意 : 按顺序读入一些列数,所对应的序列代表价值,数值代表个数(如a[5]=6 ,代表价值为五 ...

  6. hdu 2191 (多重背包+二进制优化)

    Problem Description 急!灾区的食物依然短缺!为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品, ...

  7. HDU 3732 Ahui Writes Word 多重背包优化01背包

    题目大意:有n个单词,m的耐心,每个单词有一定的价值,以及学习这个单词所消耗的耐心,耐心消耗完则,无法学习.问能学到的单词的最大价值为多少. 题目思路:很明显的01背包,但如果按常规的方法解决时间复杂 ...

  8. poj 1014多重背包

    题意:给出价值为1,2,3,4,5,6的6种物品数量,问是否能将物品分成两份,使两份的总价值相等. 思路:求出总价值除二,做多重背包,需要二进制优化. 代码: #include<iostream ...

  9. ACM__01背包,完全背包,多重背包

    今天写题的时候碰到了一道完全背包题,可是没有看出来,乱写了一通,浪费了一个晚上,顺便复习一下背包的知识 01背包 每种物品只能选择一次或者不选,求背包容量内的最大价值 先给出状态转移方程: f[i][ ...

随机推荐

  1. Spring MVC之简单入门

    一.Spring MVC简介: 1.什么是MVC 模型-视图-控制器(MVC)是一个众所周知的以设计界面应用程序为基础的设计模式.它主要通过分离模型(Model).视图(View)及控制器(Contr ...

  2. Dubbo Spring Cloud Motan

    跨语言统一治理.Golang,谈谈另辟蹊径的开源RPC框架Motan_搜狐科技_搜狐网 https://www.sohu.com/a/207389967_467759

  3. Möbius strip

    en.wikipedia.org/wiki/Möbius_strip http://mechproto.olin.edu/final_projects/average_jo.html Fabricat ...

  4. jps不显示java进程信息

    本来想自己整理,发现已经有前人整理,并且完美解决了我的问题,故转载,感谢分享 转自:http://trinea.iteye.com/blog/1196400 对于jps较熟悉可以直接查看第二部分的分析 ...

  5. Java其实不支持垃圾回收

    Java其实不支持垃圾回收.如果真的支持的话,大多数Java程序在运行的一开始就应该把程序本身删除,因为这些程序本身就是垃圾.   // TODO: This is a 分割线. Please no ...

  6. php高级技巧总结

    通过对<深入理解PHP:高级技巧.面向对象与核心技术>这本书的学习,总结出常用的php高级技巧,也方便自己以后查阅;我认为该书是php高级教程的葵花宝典,哈哈.里面的内容很实用,尤其是在项 ...

  7. ping返回 dup

    大概原因如下: 目的主机不可达,也就是 跟主机不在一个网段,也没有路由跳转 一般是远端交换机或HUB流量超过负载,即堵塞 应该是你的网络中存在环路路由,也就是到达你ping的主机有一条以上的路由路径, ...

  8. php排序方法之快速排序

    $arr = array(3,55,45,2,67,76,6.7,-65,85,4); function quickSort($arr){ if (count($arr) <= 1){ retu ...

  9. 内部类访问外部类方法中的参数-使用final

    public synchronized <T extends MetricsSource> T register(final String name, final String desc, ...

  10. hdu-5726 GCD(rmq)

    题目链接: GCD Time Limit: 10000/5000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) Prob ...