首页 > 其他 > 详细

hdu4091(贪心枚举)

时间:2015-11-04 23:02:35      阅读:326      评论:0      收藏:0      [点我收藏+]

先考虑性价,假设宝石1性价比高于宝石2,则宝石2最多不可能拿超过lcm(s1, s2) / s2个

枚举性价比较低的宝石拿多少个即可

 

 1 #include <bits/stdc++.h>
 2 
 3 long long n, s1, s2, v1, v2;
 4 
 5 long long gcd(long long a, long long b)
 6 {
 7     return b ? gcd(b, a%b) : a;
 8 }
 9 
10 int main()
11 {
12     int T_T, t_t;
13     scanf("%d", &T_T);
14     for (t_t = 1; t_t <= T_T; ++t_t) {
15         scanf("%I64d%I64d%I64d%I64d%I64d", &n, &s1, &v1, &s2, &v2);
16         if (v1*s2 < v2*s1) {
17             std::swap(v1, v2);
18             std::swap(s1, s2);
19         }
20         long long max_cnt = std::min(n/s2, s1/gcd(s1, s2));
21         long long ans = 0;
22         for (long long i = 0; i <= max_cnt; ++i)
23             ans = std::max(ans, i * v2 + (n-i*s2)/s1*v1);
24         printf("Case #%d: %I64d\n", t_t, ans);
25     }
26 }

 

hdu4091(贪心枚举)

原文:http://www.cnblogs.com/takeoffyoung/p/4937540.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!