hdu 4091 数学思维题贪心
2014-11-03 16:56
337 查看
/* 参看博客地址:http://blog.csdn.net/oceanlight/article/details/7857713 重点是取完最优的后剩余的rest=n%lcm+lcm;中性价比小的数目num<lcm/性价比小的体积,因为如果大于的话 肯定可以由性价比好的替换。 然后枚举。从体积大的开始枚举次数少。 注意64位 */ #include<stdio.h> #include<string.h> #include<stdlib.h> #define ll __int64 ll gcd(ll a,ll b) { if(b==0)return a; return gcd(b,a%b); } ll lcm(ll a,ll b) { return a/gcd(a,b)*b; } int main() { ll t,n,i,k=0,m,a,av,b,bv,aa,maxx,d; scanf("%I64d",&t); while(t--){ scanf("%I64d%I64d%I64d%I64d%I64d",&n,&av,&a,&bv,&b); m=lcm(av,bv); aa=0;maxx=-1; if(n/m) {//如果可以lcm<=n if(a*bv>b*av) aa+=m/av*(n/m-1)*a; else aa+=m/bv*(n/m-1)*b; } if(n/m)//如果lcm<=n m+=n%m; else m=n; if(av<bv) {d=av;av=bv;bv=d;d=a;a=b;b=d;}//av。a记录体积大的 for(i=0;i<=m/av;i++) {//从体积大的开始枚举 if(maxx<aa+i*a+(m-i*av)/bv*b) maxx=aa+i*a+(m-i*av)/bv*b; } printf("Case #%I64d: %I64d\n",++k,maxx); } return 0;}
相关文章推荐
- hdu 4091 数学思维题贪心
- hdu 4091 贪心+数学 部分数论
- !hdu 4091--贪心、枚举--(思维)
- HDU-4655 Cut Pieces 数学,贪心
- HDU 4611 Balls Rearrangement (数学-思维逻辑题)
- hdu_4091_Zombie’s Treasure Chest(贪心+枚举)
- HDU 5073 Galaxy(Anshan 2014)(数学推导,贪心)
- hdu 3348 (数学+贪心)
- Hdu 5339 Untitled (数学思维)
- HDU 1678 Shopaholic(简单数学题 贪心)
- HDU 2570 迷障【贪心+数学题】
- HDU 4726 Kia's Calculation(数学+贪心)
- HDU 2674 N!Again(数学思维水题)
- hdu 4803 Poor Warehouse Keeper(贪心+数学)
- hdu 4882 ZCC Loves Codefires(数学题+贪心)
- hdu 4950 Monster (数学思维)
- hdu(4091)Zombie’s Treasure Chest(贪心+背包)
- hdu 4091 Zombie’s Treasure Ches 贪心
- hdu 4882 ZCC Loves Codefires(数学题+贪心)
- hdu 4550 贪心 思维题 不错