hdu(4091)Zombie’s Treasure Chest(贪心+背包)
2013-08-10 20:26
441 查看
题意:已知s s1 v1 s2 v2; 设有 x 个 s1 和 y 个 s2 ;满足 x*s1+y*s2<=s 求 max(x*v1+y*v2)
给一个背包的容量n,两种物品的花费a,c和价值b,d,问最多能装多少价值。
分析:就是n/(a*c/gcd(a,c))-1个a,c的最小公倍数的背包容量肯定是装相对价值比较大的那个物品,剩下的对花费较大的那个物品进行枚举,求出剩下的能装的最大价值
#include"stdio.h"
#include"string.h"
#define max(a,b) a>b?a:b
__int64 fun(__int64 a,__int64 b)
{
__int64 c,d=1;
if(a<b)
{
c=a;
a=b;
b=c;
}
while(d>0)
{
d=a%b;
a=b;
b=d;
}
return a;
}
int main()
{
__int64 s,s1,s2,v1,v2,n,m,tmp,res,t,max;
int k,i,r=1;
scanf("%d",&k);
while(k--)
{
scanf("%I64d%I64d%I64d%I64d%I64d",&s,&s1,&v1,&s2,&v2);
tmp=s1/fun(s1,s2)*s2;
n=s/tmp,m=s%tmp;
if(n)
{
n--;
m+=tmp;
}
res=max(n*(tmp/s1)*v1,n*(tmp/s2)*v2);
if(s1<s2)
{
t=s1;s1=s2;s2=t;
t=v1;v1=v2;v2=t;
}
max=0;
for(i=0;i<=m/s1;i++)
{
t=i*v1+(m-i*s1)/s2*v2;
if(max<t)
max=t;
}
printf("Case #%d: %I64d\n",r++,max+res);
}
return 0;
}
给一个背包的容量n,两种物品的花费a,c和价值b,d,问最多能装多少价值。
分析:就是n/(a*c/gcd(a,c))-1个a,c的最小公倍数的背包容量肯定是装相对价值比较大的那个物品,剩下的对花费较大的那个物品进行枚举,求出剩下的能装的最大价值
#include"stdio.h"
#include"string.h"
#define max(a,b) a>b?a:b
__int64 fun(__int64 a,__int64 b)
{
__int64 c,d=1;
if(a<b)
{
c=a;
a=b;
b=c;
}
while(d>0)
{
d=a%b;
a=b;
b=d;
}
return a;
}
int main()
{
__int64 s,s1,s2,v1,v2,n,m,tmp,res,t,max;
int k,i,r=1;
scanf("%d",&k);
while(k--)
{
scanf("%I64d%I64d%I64d%I64d%I64d",&s,&s1,&v1,&s2,&v2);
tmp=s1/fun(s1,s2)*s2;
n=s/tmp,m=s%tmp;
if(n)
{
n--;
m+=tmp;
}
res=max(n*(tmp/s1)*v1,n*(tmp/s2)*v2);
if(s1<s2)
{
t=s1;s1=s2;s2=t;
t=v1;v1=v2;v2=t;
}
max=0;
for(i=0;i<=m/s1;i++)
{
t=i*v1+(m-i*s1)/s2*v2;
if(max<t)
max=t;
}
printf("Case #%d: %I64d\n",r++,max+res);
}
return 0;
}
相关文章推荐
- hdu 4091 Zombie’s Treasure Chest 贪心+枚举
- hdu_4091_Zombie’s Treasure Chest(贪心+枚举)
- hdu 4091 Zombie’s Treasure Chest 贪心+枚举
- HDU 4091 Zombie’s Treasure Chest(贪心+枚举)
- HDU 4091 Zombie’s Treasure Chest (数学加暴力)
- HDU 4091 Zombie’s Treasure Chest (不错的数论题)
- HDU 4091 Zombie’s Treasure Chest 分析 难度:1
- HDU—— 4091 Zombie’s Treasure Chest
- HDU 4091 Zombie’s Treasure Chest(2011ACM上海赛区预选赛第一题)
- hdu 4091 Zombie’s Treasure Chest(数学规律+枚举)
- hdu 4091 Zombie’s Treasure Chest
- hdu 4091 Zombie’s Treasure Chest
- HDU 4091 【2011上海现场赛 A】 Zombie’s Treasure Chest
- HDU-4091 Zombie’s Treasure Chest
- HDU 4091--Zombie’s Treasure Chest
- hdu 4091 Zombie’s Treasure Chest【2011 ACM Asia Shanghai Regional Problem A】
- HDU 4091 - Zombie’s Treasure Chest
- hdu 4091 Zombie’s Treasure Ches 贪心
- HDU_4091_Zombie’s Treasure Chest_最小公倍数、机智地枚举
- 解题报告(三):Zombie’s Treasure Chest 上海现场赛A题(hdu 4091)