Cash Machine(多重背包)
http://poj.org/problem?id=1276
#include <stdio.h>
#include <string.h>
const int N=;
#define Max(a,b) (a)>(b)?(a):(b)
int dp[N],cash;
void ZeroOnePack(int cost)//01背包
{
for (int i = cash; i >= cost; i--)
{
dp[i] = Max(dp[i],dp[i-cost]+cost);
}
}
void ComplexPack(int cost)//完全背包
{
for (int i = cost; i <= cash; i++)
{
dp[i] = Max(dp[i],dp[i-cost]+cost);
}
}
void MultiplePack(int cnt,int cost)//多重背包
{
if (cnt*cost > cash)
ComplexPack(cost);
else
{
int k = ;
while(k < cnt)
{
ZeroOnePack(k*cost);
cnt-=k;
k<<=;
}
ZeroOnePack(cnt*cost);
}
}
int main()
{
int n,cost[],cnt[];
while(~scanf("%d %d",&cash,&n))
{
for (int i = ; i <= n; i++)
{
scanf("%d %d",&cnt[i],&cost[i]);
}
memset(dp,,sizeof(dp));
for (int i = ; i <= n; i++)
{
MultiplePack(cnt[i],cost[i]);
}
printf("%d\n",dp[cash]);
}
return ;
}
Cash Machine(多重背包)的更多相关文章
- Poj 1276 Cash Machine 多重背包
Cash Machine Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 26172 Accepted: 9238 Des ...
- POJ1276:Cash Machine(多重背包)
Description A Bank plans to install a machine for cash withdrawal. The machine is able to deliver ap ...
- POJ 1276:Cash Machine 多重背包
Cash Machine Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 30006 Accepted: 10811 De ...
- POJ1276 - Cash Machine(多重背包)
题目大意 给定一个容量为M的背包以及n种物品,每种物品有一个体积和数量,要求你用这些物品尽量的装满背包 题解 就是多重背包~~~~用二进制优化了一下,就是把每种物品的数量cnt拆成由几个数组成,1,2 ...
- POJ-1276 Cash Machine 多重背包 二进制优化
题目链接:https://cn.vjudge.net/problem/POJ-1276 题意 懒得写了自己去看好了,困了赶紧写完这个回宿舍睡觉,明早还要考试. 思路 多重背包的二进制优化. 思路是将n ...
- POJ 1276 Cash Machine(多重背包的二进制优化)
题目网址:http://poj.org/problem?id=1276 思路: 很明显是多重背包,把总金额看作是背包的容量. 刚开始是想把单个金额当做一个物品,用三层循环来 转换成01背包来做.T了… ...
- POJ1276:Cash Machine(多重背包)
题目:http://poj.org/problem?id=1276 多重背包模板题,没什么好说的,但是必须利用二进制的思想来求,否则会超时,二进制的思想在之前的博客了有介绍,在这里就不多说了. #in ...
- PKU--1267 Cash Machine(多重背包)
题目http://poj.org/problem?id=1276 分析 这是一个多重背包的问题,可以把请求的金额当作背包的重量,而货币的面值就是价值又是重量. 于是这个问题便很好理解背包了. #];; ...
- [poj 1276] Cash Machine 多重背包及优化
Description A Bank plans to install a machine for cash withdrawal. The machine is able to deliver ap ...
随机推荐
- 类QQ账号生成阐述
具体需求如下: 数字账号从60000到9999999999(类似qq号一样的东东) 用户获取数字账号为随机分配,也可递加分配,需要符合如下规则 特殊账号需要保留,不能分配给用户,比如:112233(连 ...
- centOS Linux下用yum安装mysql
centOS Linux下用yum安装mysql 第一篇:安装和配置MySQL 第一步:安装MySQL [root@192 local]# yum -y install mysql- ...
- 洛谷——P1572 计算分数
P1572 计算分数 模拟+字符串 注意有两位数的情况以及负数情况 #include<bits/stdc++.h> using namespace std; string s; ],b[] ...
- 几个加固云服务器的方法(VPS版)
前不久我的月供hide.me账号终于永远沉睡了,平时也就不过去油管看些养猫视频也能被盯上--迫于学业和娱乐的重担(),我决定搭建一个VPS来解决这种麻烦. 方法:自行选购VPS咯,不管是土豪去买AWS ...
- uva-156(Ananagrams UVA - 156)
map容器的模板题,判断是否能交换字母顺序变成另外一个单词,只需要先把单词都变成小写字母.然后再按字母字典序排序,放入map中进行计数,然后把计数为一的再放入另一个容器,再排序输出即可 我的代码(刘汝 ...
- MySQL详细操作
一.用户管理 -- 创建用户 create user "用户名"@"IP地址" identified by "密码"; "; &q ...
- scrapy——8 scrapyd使用
scrapy——8 scrapyd使用 什么是scrapyd 怎么安装scrapyd 如何使用scrapyd--运行scrapyd 如何使用scrapyd--配置scrapy.cfg 如何使用s ...
- ACM的你伤不起
劳资六年前开始搞ACM啊!!!!!!!!!! 从此踏上了尼玛不归路啊!!!!!!!!!!!! 谁特么跟劳资讲算法是程序设计的核心啊!!!!!! 尼玛除了面试题就没见过用算法的地方啊!!!!!! ...
- hdu_1049_Climbing Worm_201311061331
Climbing Worm Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- [bzoj1855][Scoi2010]股票交易_动态规划_单调队列
股票交易 bzoj-1855 Scoi-2010 题目大意:说不明白题意系列++...题目链接 注释:略. 想法:这个题还是挺难的. 动态规划没跑了 状态:dp[i][j]表示第i天手里有j个股票的最 ...