UVa #12325 Zombie's Treasure Chest (例题7-11)
2015-03-12 15:07
197 查看
书中的分类枚举法一举克服了普通枚举最大10^9的规模:
第一种宝藏最多n/s1个,所以宝藏1的数量可以从1枚举到n/s1,同时算出宝藏2最多多少个,求出总价值。
宝藏2最多n/s1个,枚举方法同上。
因此如果n/s1比较小,就枚举宝藏1,n/s2比较小就枚举宝藏2
如果n很大而s1 s2很小,则用以下的枚举法:
s2个宝藏1和s1个宝藏2体积相等,但价值分别为s2*v1和s1*v2。如果前者大于后者,则最优解的宝藏2最多拿s1-1个,因为如果拿了s1个宝藏2,则可以全部换成宝藏1,体积一样但价值更高了。反之对于宝藏1也一样。因此枚举量最大为max(s1-1, s2-1)。
一个坑是整型溢出。
Run Time: 0.025s
第一种宝藏最多n/s1个,所以宝藏1的数量可以从1枚举到n/s1,同时算出宝藏2最多多少个,求出总价值。
宝藏2最多n/s1个,枚举方法同上。
因此如果n/s1比较小,就枚举宝藏1,n/s2比较小就枚举宝藏2
如果n很大而s1 s2很小,则用以下的枚举法:
s2个宝藏1和s1个宝藏2体积相等,但价值分别为s2*v1和s1*v2。如果前者大于后者,则最优解的宝藏2最多拿s1-1个,因为如果拿了s1个宝藏2,则可以全部换成宝藏1,体积一样但价值更高了。反之对于宝藏1也一样。因此枚举量最大为max(s1-1, s2-1)。
一个坑是整型溢出。
Run Time: 0.025s
#define UVa "LT7-11.12325.cpp" //Zombie's Treasure Chest char fileIn[30] = UVa, fileOut[30] = UVa; #include<cstring> #include<cstdio> #include<algorithm> using namespace std; //Global Variables. Reset upon Each Case! int T; long long n, s1, v1, s2, v2; ///// int main() { scanf("%d", &T); for(int kase = 1; kase <= T; kase ++) { scanf("%lld%lld%lld%lld%lld", &n, &s1, &v1, &s2, &v2); long long q1 = n/s1, q2 = n/s2, q3 = max(s1, s2); long long mincomplex = min(min(q1, q2), q3); long long maxv = 0, v = 0; if(mincomplex == q1) { for(long long i = 0; i <= n/s1; i ++) { v = i*v1 + ((n-(i*s1))/s2)*v2; maxv = max(maxv, v); } } else if (mincomplex == q2) { for(long long i = 0; i <= n/s2; i ++) { v = i*v2 + ((n-(i*s2))/s1)*v1; maxv = max(maxv, v); } } else { long long a = s1*v2, b = s2*v1; if(a > b) { for(long long i = 0; i <= s2 - 1; i ++) { //# of treasury 1. v = i*v1 + ((n-(i*s1))/s2)*v2; maxv = max(maxv, v); } } else { for(long long i = 0; i <= s1 - 1; i ++) { //# of treasury 2. v = i*v2 + ((n-(i*s2))/s1)*v1; maxv = max(maxv, v); } } } printf("Case #%d: %lld\n", kase, maxv); } return 0; }
相关文章推荐
- Uva12325 Zombie's Treasure Chest【分类枚举】【例题7-11】
- 例题7-11 宝箱 UVa12325
- 紫书 例题 7-11 宝箱 UVA 12325
- 【例题 7-11 UVA - 12325】Zombie's Treasure Chest
- 例题7-11 宝箱(Zombie's Treasure Chest, Shanghai 2011, UVa12325)
- 例题 7-7 宝箱 UVa 12325
- 【例题 7-7 UVA - 1354】Mobile Computing
- UVa442 例题6-3 矩阵链乘(Matrix Chain Multiplication)
- 【例题 7-8 UVA - 10603】Fill
- 【例题 7-10 UVA - 11212】Editing a Book
- 例题1.8 彩色立方体 UVa1352
- 例题7-1 UVa725 Division(枚举)
- Uva10603 Fill 【隐式图bfs(优先队列)】【例题7-8】
- UVa12325, Zombie's Treasure Chest
- UVA699-例题6-10 下落的树叶(The Falling Leaves,UVa 699)
- 例题7-6 UVa140 Bandwidth(枚举+剪枝)
- UVa297 例题6-11 四分树(Quadtrees)
- 【例题 8-4 UVA - 11134】Fabled Rooks
- 【例题 8-10 UVA - 714】 Copying Books
- 【dp】例题9-2 UVa 437 (HDU 1069)