Problem 2252 Yu-Gi-Oh!

Accept: 105    Submit: 628

Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

另一个平行宇宙的YellowStar,是一名游戏王决斗者,某一天它正在进行一场决斗,它的场面上拥有A只磁石战士a,B只磁石战士β,C只磁石战士γ。

现在它要把这些怪物进行一波强力的融合,并且它知道:

将磁石战士a和β融合成为磁石战士aβ,战斗力为AB

将磁石战士a和γ融合成为磁石战士aγ,战斗力为AC

将磁石战士β和γ融合成为磁石战士βγ,战斗力为BC

由于YellowStar是一名人生经验丰富的决斗者,因此它在本回合可以进行无限次的融合。它想知道经过融合它能得到最大的战斗力是多少。

 Input

第一行输入T,表示有T组样例(T <= 20)

每组样例为两行,每行3个数字

第一行为A, B, C (1 <= A, B, C <= 1e6),表示每种怪物的数量

第二行为AB, AC, BC (1 <= AB, AC, BC <= 1e6),分别表示AB,AC,BC融合之后的战斗力

 Output

每组样例输出一个数字表示答案

 Sample Input

21 1 11 2 310 23 155 4 9

 Sample Output

3175

枚举加贪心。一开始贪心的策略是,选择三种组合最优的,然后剩下的再组合,很容易找到反例。
然后又想了一个贪心策略,一种组合既然选择了,那么这种组合就应该全部组合尽,然后去枚举组合。也找到了反例。
最后的贪心策略是,只有两种组合的时候,这个时候,肯定是选择最优的优先组合,比如ab,bc两种组合ab>bc,一定是先组合ab,
再组合bc.这样我们再枚举ac组合,就可以了。有时候,ab,bc,ac三种组合很难做出贪心策略。我们应该把问题简单化、
复杂的问题简单化,再去枚举就好了。
  1. #include <iostream>
  2. #include <math.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <string>
  7. #include <map>
  8. #include <stack>
  9. #include <queue>
  10.  
  11. using namespace std;
  12. typedef long long int LL;
  13. int t;
  14. LL a,b,c;
  15. LL ab,ac,bc;
  16. LL xab,xac,xbc;
  17. int main()
  18. {
  19. scanf("%d",&t);
  20. while(t--)
  21. {
  22.  
  23. scanf("%lld%lld%lld",&a,&b,&c);
  24. scanf("%lld%lld%lld",&ab,&ac,&bc);
  25. xab=min(a,b);
  26. xbc=min(b,c);
  27. xac=min(a,c);
  28. LL xa=a,xc=c,xb=b;
  29. LL ans=0;
  30. while(xab>=0)
  31. {
  32. xa=a-xab;
  33. xb=b-xab;
  34. if(ac>bc)
  35. {
  36. if(xc>xa)
  37. ans=max(ans,xab*ab+ac*xa+bc*min(xb,(xc-xa)));
  38. else
  39. ans=max(ans,xab*ab+ac*xc);
  40. }
  41. else
  42. {
  43. if(xc>xb)
  44. ans=max(ans,xab*ab+bc*xb+ac*min(xa,(xc-xb)));
  45. else
  46. ans=max(ans,xab*ab+bc*xc);
  47. }
  48. xab--;
  49. }
  50. xa=a;
  51. while(xbc>=0)
  52. {
  53. xb=b-xbc;
  54. xc=c-xbc;
  55. if(ab>ac)
  56. {
  57. if(xa>xb)
  58. ans=max(ans,xbc*bc+ab*xb+ac*min(xc,(xa-xb)));
  59. else
  60. ans=max(ans,xbc*bc+ab*xa);
  61. }
  62. else
  63. {
  64. if(xa>xc)
  65. ans=max(ans,xbc*bc+ac*xc+ab*min(xb,(xa-xc)));
  66. else
  67. ans=max(ans,xbc*bc+ac*xa);
  68. }
  69. xbc--;
  70. }
  71. xb=b;
  72. while(xac>=0)
  73. {
  74. xa=a-xac;
  75. xc=c-xac;
  76. if(ab>bc)
  77. {
  78. if(xb>xa)
  79. ans=max(ans,xac*ac+ab*xa+bc*min(xc,(xb-xa)));
  80. else
  81. ans=max(ans,xac*ac+ab*xb);
  82. }
  83. else
  84. {
  85. if(xb>xc)
  86. ans=max(ans,xac*ac+bc*xc+ab*min(xa,(xb-xc)));
  87. else
  88. ans=max(ans,xac*ac+bc*xb);
  89.  
  90. }
  91. xac--;
  92. }
  93. printf("%I64d\n",ans);
  94. }
  95. return 0;
  96. }


FZU 2252 Yu-Gi-Oh!(枚举+贪心)的更多相关文章

  1. D. Diverse Garland Codeforces Round #535 (Div. 3) 暴力枚举+贪心

    D. Diverse Garland time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  2. 51nod1625(枚举&贪心)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1625 题意:中文题诶- 思路:枚举+贪心 一开始写的行和列同时 ...

  3. 枚举+贪心 HDOJ 4932 Miaomiao's Geometry

    题目传送门 /* 题意:有n个点,用相同的线段去覆盖,当点在线段的端点才行,还有线段之间不相交 枚举+贪心:有坑点是两个点在同时一条线段的两个端点上,枚举两点之间的距离或者距离一半,尽量往左边放,否则 ...

  4. [BZOJ 1028] [JSOI2007] 麻将 【枚举+贪心判断】

    题目链接:BZOJ - 1028 题目分析 枚举听的是哪种牌,再枚举成对的是哪种牌,再贪心判断: 从1到n枚举每一种牌,如果这种牌的个数小于0,就返回不合法. 将这种牌的张数 % 3, 剩下的只能和 ...

  5. 【枚举+贪心】【TOJ3981】【ICPC Balloons】

    给你N种不同颜色气球,每种气球有个数目 count[i],给的同种颜色气球可能是L尺寸,或M尺寸. M个问题,每个问题有个解决人数ac[i]. 每个问题 要分配一种颜色的气球,尺寸要一样 现在 这些气 ...

  6. 【枚举+贪心】【ZOJ3715】【Kindergarten Electiond】

    题目大意: n 个人 在选取班长 1号十分想当班长,他已经知道其他人选择了谁,但他可以贿赂其他人改选他,问贿赂的最小值 ps.他自己也要投一个人 要处理一个问题是,他自己投谁 其实这个问题在这种局面下 ...

  7. UVALive 6912 Prime Switch 暴力枚举+贪心

    题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...

  8. bzoj1050[HAOI2006]旅行comf(枚举+贪心+并查集)

    Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大 ...

  9. AtCoder - 2565 枚举+贪心

    There is a bar of chocolate with a height of H blocks and a width of W blocks. Snuke is dividing thi ...

随机推荐

  1. Linux中/etc/resolv.conf文件简析

    https://blog.csdn.net/lcr_happy/article/details/54867510

  2. linux环境变量的概述

    https://blog.csdn.net/u010533843/article/details/54986646 https://www.linuxidc.com/Linux/2017-08/146 ...

  3. 【转载】springboot + swagger

    注:本文参考自 http://www.jianshu.com/p/0465a2b837d2 https://www.cnblogs.com/java-zhao/p/5348113.html swagg ...

  4. JAVA内存泄露分析及解决

    一,问题产生     项目采用Tomcat6.0为服务器,数据库为mysql5.1,数据库持久层为hibernate3.0,以springMVC3.0为框架,项目开发完成后,上线前夕进行稳定性拷机,测 ...

  5. 【RF库测试】Encode String To Bytes&Decode Bytes To String& should be string&should be unicode string &should not be string

    场景1:判断类型 r ${d} set variable \xba\xcb\xbc\xf5\xcd\xa8\xb9\xfd #核减通过 Run Keyword And Continue On Fail ...

  6. C#调用DLL报“试图加载格式不正确的程序”

    项目右键属性->项目设计器->生成->平台->把'默认设置(任何 CPU)'改为x86或者x64

  7. 去掉a标签

    需求: 去掉网页中所有的a标签 方法一: str.replace(/(<\/?a.*?>)|(<\/?span.*?>)/g, '');//str为要修改的那段文字 方法二: ...

  8. JDBC批量加密数据库密码

    package com.lxc.wmb; import java.io.UnsupportedEncodingException; import java.security.MessageDigest ...

  9. Struts2(一)基本配置

    一.Struts2概述 1.什么是Struts2? Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样使得业务逻辑控制器能够和ServletAPI脱离开来. 2.工作原理 当 ...

  10. 理解Java的反射与内省及其区别

    java的内省机制和反射机制什么区别 内省操作只针对JavaBean,只有符合JavaBean规则的类的成员才可以采用内省API进行操作....而反射则不同,一个类的所有成员都可以进行反射操作. 内省 ...