首页 > 其他 > 详细

BZOJ2490 Zombie’s Treasure Chest

时间:2015-03-23 21:39:25      阅读:213      评论:0      收藏:0      [点我收藏+]

如果n = lcm(s1, s2),那么就可以直接得到maxV = (v / s1 * v1, v / s2 *v2)

然后还剩下一点体积我们暴力枚举用s1的量,让s1为max(s1, s2)可以减少枚举次数。。。然后就做完了QAQ

 

技术分享
 1 /**************************************************************
 2     Problem: 2490
 3     User: rausen
 4     Language: C++
 5     Result: Accepted
 6     Time:4 ms
 7     Memory:804 kb
 8 ****************************************************************/
 9  
10 #include <cstdio>
11 #include <algorithm>
12  
13 using namespace std;
14 typedef long long ll;
15  
16 ll v, s1, s2, v1, v2;
17 ll ans, del;
18  
19 int main() {
20     int T, icase, i;
21     ll t, tmp;
22     scanf("%d", &T);
23     for (icase = 1; icase <= T; ++icase) {
24         scanf("%lld%lld%lld%lld%lld", &v, &s1, &v1, &s2, &v2);
25         if (s1 < s2) swap(s1, s2), swap(v1, v2);
26         tmp = s1 * s2 / __gcd(s1, s2), t = v / tmp;
27         v = v % tmp;
28         if (t) --t, v += tmp;
29         ans = max(t * (tmp / s1) * v1, t * (tmp / s2) * v2);
30         for (i = del = 0; i <= v / s1; ++i)
31             del = max(del, i * v1 + (v - i * s1) / s2 * v2);
32         printf("Case #%d: %lld\n", icase, ans + del);
33     }
34     return 0;
35 }
View Code

 

BZOJ2490 Zombie’s Treasure Chest

原文:http://www.cnblogs.com/rausen/p/4360854.html

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