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三种组合很难做出贪心策略。我们应该把问题简单化、
复杂的问题简单化,再去枚举就好了。
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <map>
#include <stack>
#include <queue> using namespace std;
typedef long long int LL;
int t;
LL a,b,c;
LL ab,ac,bc;
LL xab,xac,xbc;
int main()
{
scanf("%d",&t);
while(t--)
{ scanf("%lld%lld%lld",&a,&b,&c);
scanf("%lld%lld%lld",&ab,&ac,&bc);
xab=min(a,b);
xbc=min(b,c);
xac=min(a,c);
LL xa=a,xc=c,xb=b;
LL ans=0;
while(xab>=0)
{
xa=a-xab;
xb=b-xab;
if(ac>bc)
{
if(xc>xa)
ans=max(ans,xab*ab+ac*xa+bc*min(xb,(xc-xa)));
else
ans=max(ans,xab*ab+ac*xc);
}
else
{
if(xc>xb)
ans=max(ans,xab*ab+bc*xb+ac*min(xa,(xc-xb)));
else
ans=max(ans,xab*ab+bc*xc);
}
xab--;
}
xa=a;
while(xbc>=0)
{
xb=b-xbc;
xc=c-xbc;
if(ab>ac)
{
if(xa>xb)
ans=max(ans,xbc*bc+ab*xb+ac*min(xc,(xa-xb)));
else
ans=max(ans,xbc*bc+ab*xa);
}
else
{
if(xa>xc)
ans=max(ans,xbc*bc+ac*xc+ab*min(xb,(xa-xc)));
else
ans=max(ans,xbc*bc+ac*xa);
}
xbc--;
}
xb=b;
while(xac>=0)
{
xa=a-xac;
xc=c-xac;
if(ab>bc)
{
if(xb>xa)
ans=max(ans,xac*ac+ab*xa+bc*min(xc,(xb-xa)));
else
ans=max(ans,xac*ac+ab*xb);
}
else
{
if(xb>xc)
ans=max(ans,xac*ac+bc*xc+ab*min(xa,(xb-xc)));
else
ans=max(ans,xac*ac+bc*xb); }
xac--;
}
printf("%I64d\n",ans);
}
return 0;
}


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. 缓存管理(本地缓存+memcached)

    http://www.cnblogs.com/daizhj/archive/2009/11/17/1604436.html

  2. SpringBoot------thymeleaf的使用

    1.pom.xml添加相应依赖 <dependency> <groupId>org.springframework.boot</groupId> <artif ...

  3. Java Jdk1.8 HashMap源代码阅读笔记二

    三.源代码阅读 3.元素包括containsKey(Object key) /** * Returns <tt>true</tt> if this map contains a ...

  4. MySql 错误 Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes

    今天在用Navicat导入SQL文件时报错:MySql 错误 Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes ...

  5. ios开发之 -- stringByAddingPercentEscapesUsingEncoding方法被替换 iOS9.0

    最近在项目中,发现之前的一个方法已经不被建议使用了. 该方法名即题目中提到的: stringByAddingPercentEscapesUsingEncoding,这个方法是用来进行转码的,即将汉字转 ...

  6. 【代码审计】CmsEasy_v5.7 代码执行漏洞分析

      0x00 环境准备 CmsEasy官网:http://www.cmseasy.cn/ 网站源码版本:CmsEasy_v5.7_UTF8-0208 程序源码下载: http://ftp.cmseas ...

  7. vi 中大小写转换功能

    所有的操作都是围绕着“gu"和“gU”另个命令展开的.secooler的语法:[开始位置]gu/Gu[结束位置]secooler的翻译: [开始位置] ---- 可以指定开始的位置,默认是光 ...

  8. Linux命令之乐--wget

    常见参数: 参数 作用 -b 后台下载模式. -P 下载到指定目录. -t  最大尝试次数. -c  断点续传 -p 下载页面内所有资源,包括图片.视频等. -r 递归下载 实例1,下载本站的所有文章 ...

  9. [XPath] XPath 与 lxml (五)XPath 实例

    本文继续沿用第三章的 XML 示例文档. 选取价格高于30的 price 节点 # 从父节点进行筛选 >>> root.xpath('//book[price>30]/pric ...

  10. [Ubuntu] APT - Advanced Packaging Tool 简明指南

    Advanced Packaging Tool,一般简称为apt,是Debian GNU/Linux distribution及其变体版本中与核心库一道处理软件的安装和卸载. Ubuntu是Debia ...