poj1276 多重背包
- //Accepted 1100 KB 47 ms
- //多重背包
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <queue>
- #include <cmath>
- #include <algorithm>
- using namespace std;
- /**
- * This is a documentation comment block
- * 如果有一天你坚持不下去了,就想想你为什么走到这儿!
- * @authr songt
- */
- ;
- ;
- int dp[imax_v];
- int weight[imax_n],amount[imax_n];
- int n,v;
- int max(int a,int b)
- {
- return a>b?a:b;
- }
- void zeroOnePack(int weight,int value,int v)
- {
- for (int j=v;j>=weight;j--)
- dp[j]=max(dp[j],dp[j-weight]+value);
- }
- void completePack(int weight,int value,int v)
- {
- for (int j=weight;j<=v;j++)
- dp[j]=max(dp[j],dp[j-weight]+value);
- }
- void multiplePack(int weight,int value,int amount,int v)
- {
- ;
- if (amount*weight>=v)
- {
- completePack(weight,value,v);
- return ;
- }
- while (k<amount)
- {
- zeroOnePack(k*weight,k*value,v);
- amount-=k;
- k<<=;
- }
- zeroOnePack(amount*weight,amount*value,v);
- }
- void Dp()
- {
- ;i<=v;i++) dp[i]=;
- ;i<=n;i++)
- {
- multiplePack(weight[i],weight[i],amount[i],v);
- }
- ;
- ;i<=v;i++)
- ans=max(ans,dp[i]);
- printf("%d\n",ans);
- }
- int main()
- {
- while (scanf("%d%d",&v,&n)!=EOF)
- {
- ;i<=n;i++)
- scanf("%d%d",&amount[i],&weight[i]);
- Dp();
- }
- ;
- }
poj1276 多重背包的更多相关文章
- POJ-1276 Cash Machine 多重背包 二进制优化
题目链接:https://cn.vjudge.net/problem/POJ-1276 题意 懒得写了自己去看好了,困了赶紧写完这个回宿舍睡觉,明早还要考试. 思路 多重背包的二进制优化. 思路是将n ...
- POJ1276 - Cash Machine(多重背包)
题目大意 给定一个容量为M的背包以及n种物品,每种物品有一个体积和数量,要求你用这些物品尽量的装满背包 题解 就是多重背包~~~~用二进制优化了一下,就是把每种物品的数量cnt拆成由几个数组成,1,2 ...
- POJ1276:Cash Machine(多重背包)
Description A Bank plans to install a machine for cash withdrawal. The machine is able to deliver ap ...
- POJ1276:Cash Machine(多重背包)
题目:http://poj.org/problem?id=1276 多重背包模板题,没什么好说的,但是必须利用二进制的思想来求,否则会超时,二进制的思想在之前的博客了有介绍,在这里就不多说了. #in ...
- 【POJ1276】Cash Machine(多重背包单调队列优化)
大神博客转载http://www.cppblog.com/MatoNo1/archive/2011/07/05/150231.aspx多重背包的单调队列初中就知道了但一直没(不会)写二进制优化初中就写 ...
- POJ1276【多重背包】
题意: 给出一个价值sum,然后给出n,代表n个方案,接着n对代表个数与价值,要求最接近sum,但不超过sum的价值. 思路: 多重背包,利用二进制拆分达到保证对于0..n间的每一个整数,均可以用若干 ...
- POJ1276Cash Machine[多重背包可行性]
Cash Machine Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 32971 Accepted: 11950 De ...
- 洛谷P1782 旅行商的背包[多重背包]
题目描述 小S坚信任何问题都可以在多项式时间内解决,于是他准备亲自去当一回旅行商.在出发之前,他购进了一些物品.这些物品共有n种,第i种体积为Vi,价值为Wi,共有Di件.他的背包体积是C.怎样装才能 ...
- HDU 2082 找单词 (多重背包)
题意:假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1,字母B的价值为2,..... 字母Z的价值为26.那么,对于给定的字母,可以找到多少价值<=50的 ...
随机推荐
- ubuntu 系统出错一览
1.系统升级出错:打开终端输入:sudo apt-get install -f
- <mvc:annotation-driven />注解意义
<mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案. <mvc:annotation-dr ...
- class、interface、struct的区别
1 struct和class有什么区别 1.1默认的继承访问权限 Struct是public的,class是private的. 你可以写如下的代码: struct A { char a; }; str ...
- ASP.NET-【缓存】-使用ASP.NET缓存
缓存一个List 泛型结构 1.显示 var s = Get("personsl"); foreach (var item in s) { Response.Write(item. ...
- hibernate generator class=xxx id详解
<id>元素中的<generator>用来为该持久化类的实例生成唯一的标识,hibernate提供了很多内置的实现.Increment:由hibernate自动递增生成标识符, ...
- intel vt-x处于禁用状态下如何处理
1.首先看你的bios选项里面有没有该选项,如果没有就更新,更新之后还没有,则不支持 2.找到intel Virtualization Technology 将状态改为Enabled 同时找到int ...
- 编写自己的Windows Live Writer插件
起因 自从小猪使用Windows Live Writer(wlw)来写博客之后就很少打开网站的后台编辑器了,这真是个写博客的好东西啊,但是任何东西都是不完美的.索契冬奥会开幕式都会把五环弄成四环呢!对 ...
- 安装Adobe Dreamweaver CS6 免序列号 官方破解版
Adobe Dreamweaver CS6 免序列号 官方破解版 Adobe Dreamweaver CS6是世界顶级软件厂商Adobe推出的一套可视化的网页开发工具,Dreamweaver CS6最 ...
- [Js]基础知识
一.JavaScript组成 1.ECMAScript 解释器.翻译(提供功能有限,如加减乘除,定义变量.函数等) 几乎没有兼容性问题 2.DOM 有一些兼容性问题 3.BOM(用的少,交互 ...
- QQ2013登录报文简单分析(不可用于非法用途)
[NO.1 2013-05-08 00:31:16 046 SEND 115字节]02 31 03 08 25 27 B5 88 6F 91 D2 03 00 00 00 0101 01 00 00 ...