hdu_4091_Zombie’s Treasure Chest(贪心+枚举)
来源:互联网 发布:汽车贸易额数据 编辑:程序博客网 时间:2024/05/22 03:32
题型:数论
题意:
有绿宝石和蓝宝石。每一块绿宝石的体积为S1,价值为V1;每一块蓝宝石的体积为S2,价值为V2。
问N大小的背包,能装的最大价值。
分析:
看起来像背包的题,但是数据范围是int整型,所以不能使用背包。
考虑到只有两种物品,所有可以采用贪心+枚举的策略。
∵S1x+S2y<=N
设L = lcm(S1,S2),有N = k * L + left。
对于L的空间,都可以用绿宝石和蓝宝石将这个空间放满,所以,一定全部放单位体积价值高的那种宝石。
用两物体将N填到不能填为止一定与 L+left的不能再填的状况相对应 ,即空出来的部分相对应 .
所以,将N分为俩部分,(k-1)*L与L+left
对于(k-1)*L的容量,贪心的放单位体积价值高的那种宝石。
对于L+left的容量,我们不能贪心的放,所以需要枚举一种宝石的数量,然后求出一个最大值。
需要注意的是,要枚举max(S1,S2)的那块宝石,否则会TLE
代码:
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#define LL __int64#define mt(a,b) memset(a,b,sizeof(a))using namespace std;LL gcd(LL a,LL b) { return b?gcd(b,a%b):a;}LL lcm(LL a,LL b) { return a/gcd(a,b)*b;}int main() { int _; while(~scanf("%d",&_)) { int Cas = 0; LL n, s1, v1, s2, v2; while(_--) { scanf("%I64d%I64d%I64d%I64d%I64d",&n,&s1,&v1,&s2,&v2); LL l = lcm(s1,s2); LL k = n/l; LL first = (k-1) * l; LL second = n - first; LL ans = 0; if(v1*s2>v2*s1) { LL num = l / s1; ans += num * v1 * (k-1); } else { LL num = l / s2; ans += num * v2 * (k-1); } if(s1<s2) { swap(s1,s2); swap(v1,v2); } LL max_ans = 0; LL maxx = second / s1; for(LL x=0; x<=maxx; x++) { LL y = (second - (s1*x))/s2; max_ans = max(max_ans,v1*x+v2*y); } printf("Case #%d: %I64d\n",++Cas,ans+max_ans); } } return 0;}
0 0
- hdu_4091_Zombie’s Treasure Chest(贪心+枚举)
- hdu 4091 Zombie’s Treasure Chest 贪心+枚举
- HDU 4091Zombie’s Treasure Chest(贪心+枚举)
- HDU 4091 Zombie’s Treasure Chest(贪心+枚举)
- Hrbust 1201 Zombie’s Treasure Chest【贪心+暴力枚举】
- HDU_4091_Zombie’s Treasure Chest_最小公倍数、机智地枚举
- hdu4901Zombie’s Treasure Chest
- uva12325(Zombie's Treasure Chest/宝箱)=>多种方式枚举
- Uva12325 Zombie's Treasure Chest【分类枚举】【例题7-11】
- [中等] UVa OJ 12325 Zombie's Treasure Chest 另类枚举
- hdu(4091)Zombie’s Treasure Chest(贪心+背包)
- HDU4091 Zombie’s Treasure Chest
- hdu4091 Zombie’s Treasure Chest
- UVa12325 - Zombie's Treasure Chest
- 12325 Zombie's Treasure Chest
- 12325 - Zombie's Treasure Chest.
- 12325 - Zombie's Treasure Chest
- Zombie's Treasure Chest UVA
- kafka分布式消息系统介绍
- 欧足联宣布七豪门财政违规 国米罗马利物浦皆在列
- hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
- Android APK反编译就这么简单 详解(附图)
- Weblogic常用监控指标以及监控工具小结
- hdu_4091_Zombie’s Treasure Chest(贪心+枚举)
- 电子表格文件读写控件Spreadsheet免费下载购买地址
- C++下Windows Forms + MFC + WTL + wxWidgets + Qt + GTK+ 非官方综合比较
- Android应用如何监听自己是否被卸载及卸载反馈功能的实现
- WPF、Windows Forms和Silverlight间的联系和区别
- MongoDB集群
- HDU 2586 How far away ?(LCA)
- iOS]自动添加NavigationController自定义按钮动画 并且管理堆栈
- LA3942 Remember the Word(Trie+DP)