UVA 12325 - Zombie's Treasure Chest
来源:互联网 发布:java线程概念 编辑:程序博客网 时间:2024/05/16 06:57
紫书P210 例题7-11。
此题分3种情况讨论:
1、S1很小,S2很大时, 直接枚举宝物2的个数0~N/S2。
2、S1很大,S2很小时, 直接枚举宝物1的个数0~N/S1。
3、S1很小,S2很小时,当两种宝物体积相同时,比较S2*V1与S1*V2的大小,如果前者大,那应该优先拿前者。由此可得后者最多拿S1-1个。反之,前者最多拿S2-1个。
#include <stdio.h>#include <algorithm>#include <math.h>#include <string.h>using namespace std;int main(){ long long n, s1, v1, s2, v2; int T; scanf("%d", &T); for(int _ = 1; _ <= T; _++) { long long ans = 0; scanf("%lld %lld %lld %lld %lld", &n, &s1, &v1, &s2, &v2); if(n / s1 <= 50000) { int k = n / s1; for(int i = 0; i <= k; i++) { ans = max(ans, i * v1 + (n - i * s1) / s2 * v2); } } else if(n / s2 <= 50000) { int k = n / s2; for(int i = 0; i <= k; i++) { ans = max(ans, i * v2 + (n - i * s2) / s1 * v1); } } else { if(s2*v1 > s1*v2) { for(int i = 0; i < s1; i++) { ans = max(ans, i * v2 + (n - i * s2) / s1 * v1); } } else { for(int i = 0; i < s2; i++) { ans = max(ans, i * v1 + (n - i * s1) / s2 * v2); } } } printf("Case #%d: %lld\n", _, ans); }}
0 0
- UVA 12325 Zombie's Treasure Chest
- 【uva】12325 - Zombie's Treasure Chest
- UVA-12325-Zombie's Treasure Chest
- UVA - 12325 Zombie's Treasure Chest
- UVa 12325 - Zombie's Treasure Chest
- UVA 12325 Zombie's Treasure Chest
- UVA 12325 - Zombie's Treasure Chest
- UVA - 12325 Zombie's Treasure Chest
- uva 12325 - Zombie's Treasure Chest
- UVA 12325(p210)----Zombie's Treasure Chest
- 【UVa】12325 - Zombie's Treasure Chest
- uva 12325 - Zombie's Treasure Chest
- UVA 12325 Zombie's Treasure Chest
- uva 12325 Zombie's Treasure Chest
- uva 12325 Zombie's Treasure Chest
- Zombie's Treasure Chest UVA
- Zombie's Treasure Chest UVA
- 12325 Zombie's Treasure Chest
- Servlet 输出中文乱码问题
- 你好,面试官
- net/sourceforge/cobertura/coveragedata/TouchColl
- JSP内置对象
- mysql 存在该记录则更新,不存在则插入记录的sql
- UVA 12325 - Zombie's Treasure Chest
- dfs--根节点
- 在Mac系统上安装Tomcat
- c++中的几个“常”
- Android通过webservice操作数据库1(查询数据库)
- TCP/IP协议簇
- Summary Day27
- autotools的基本使用
- c++的auto_ptr