poj 1276 Cash Machine(多重背包…
2013-04-23 09:25
225 查看
题意:有一个Cash
Machine,里面装有n种面值为n[i]的货币,每种有v[i]张。问在所换金额不超过cash元钱的情况下,所能换取的最大金额。
思路:原版多重背包模版,直接用就行,不理解的看一多重背包的讲解(很详细)
//556K
47MS
#include <stdio.h>
#include <string.h>
#define M 100010
#define N 15
int dp[M],count
,val
;
int money;
int max (int a,int b)
{
return a
> b ? a : b;
}
void MulPack (int cost,int amount)
{
int v
;
if
(cost*amount >=
money)
//完全背包
{
for (v = cost;v <= money;v ++)
dp[v] = max (dp[v],dp[v-cost] + cost);
return ;
}
int k =
1;
while (k
< amount)
{
for (v = money;v >= k*cost;v
--) //分解成多个0/1背包
dp[v] = max (dp[v],dp[v-k*cost] + k*cost);
amount -= k;
k *= 2;
}
for (v =
money;v >= amount*cost;v --)
dp[v] = max (dp[v],dp[v-amount*cost] + amount*cost);
}
int main ()
{
int
n,i;
while
(~scanf ("%d%d",&money,&n))
{
memset (dp,0,sizeof(dp));
for (i = 0;i < n;i ++)
scanf
("%d%d",&count[i],&val[i]);
for (i = 0;i < n;i ++)
MulPack(val[i],count[i]);
printf ("%d\n",dp[money]);
}
}
Machine,里面装有n种面值为n[i]的货币,每种有v[i]张。问在所换金额不超过cash元钱的情况下,所能换取的最大金额。
思路:原版多重背包模版,直接用就行,不理解的看一多重背包的讲解(很详细)
//556K
47MS
#include <stdio.h>
#include <string.h>
#define M 100010
#define N 15
int dp[M],count
,val
;
int money;
int max (int a,int b)
{
return a
> b ? a : b;
}
void MulPack (int cost,int amount)
{
int v
;
if
(cost*amount >=
money)
//完全背包
{
for (v = cost;v <= money;v ++)
dp[v] = max (dp[v],dp[v-cost] + cost);
return ;
}
int k =
1;
while (k
< amount)
{
for (v = money;v >= k*cost;v
--) //分解成多个0/1背包
dp[v] = max (dp[v],dp[v-k*cost] + k*cost);
amount -= k;
k *= 2;
}
for (v =
money;v >= amount*cost;v --)
dp[v] = max (dp[v],dp[v-amount*cost] + amount*cost);
}
int main ()
{
int
n,i;
while
(~scanf ("%d%d",&money,&n))
{
memset (dp,0,sizeof(dp));
for (i = 0;i < n;i ++)
scanf
("%d%d",&count[i],&val[i]);
for (i = 0;i < n;i ++)
MulPack(val[i],count[i]);
printf ("%d\n",dp[money]);
}
}
相关文章推荐
- poj 1276 Cash Machine
- POJ Cash Machine 1276(多重背包)
- POJ-1276-Cash-Machine 二进制优化多重背包问题
- Cash Machine POJ 1276 多重背包
- Cash Machine POJ - 1276 多重背包
- Cash Machine poj 1276(多重背包)
- poj1276(Cash Machine + 多重背包)
- Cash Machine POJ - 1276 (多重背包(模板))
- Cash Machine POJ - 1276 (多重背包)
- POJ 1276 Cash Machine <多重背包>
- poj 1276 Cash Machine F
- poj&nbsp;2184&nbsp;Cow&nbsp;Exhibition(0/1背包…
- poj 1014 _ 多重背包
- Cash Machine poj 1276
- ACM: 动态规划题 poj 3211 背包变…
- ACM: dp题 poj 1276 go on 动态规…
- ACM: 动态规划题 poj 3093 0-1背包
- poj&nbsp;3211&nbsp;Washing&nbsp;Clothes&nbsp;背包
- poj&nbsp;1014&nbsp;Dividing(多重背包)
- poj&nbsp;2392&nbsp;Space&nbsp;Elevator(多重背包…