法师 南邮NOJ网络赛2083

法师

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 169            测试通过 : 25 

题目描述

说到法师,也许大家第一反应便是脆弱的身躯与强大的爆发能力。诚然如此,在《炉石传说》中,法师拥有着最高伤害的单体法术——炎爆术,同时还有同样高伤害的火球术。但法师并不仅限于此,如果说这两张火系法术代表着的是法师的爆发。那么冰系法术就代表了法师的控制,冰霜新星、冰锥术以及暴风雪和寒冰箭都能够使对手冻结。

每张卡牌能造成一定的伤害,同时也要花费一定的法力水晶。当法力水晶不够的时候,你便不能打出相应的卡牌。

为了简单起见,我们只考虑以下几张卡牌。

寒冰箭 :消耗2点法力水晶,对一个角色造成3点伤害,并使其冻结。

冰枪术:消耗1点法力水晶,使一个角色冻结,如果它已经被冻结,则改为对其造成4点伤害。

火球术:消耗4点法力水晶,造成6点伤害。

炎爆术:消耗10点法力水晶,造成10点伤害。

现在,告诉你现在拥有的法力水晶,以及手上拥有的这四种卡牌的数目(可能为0),问你能对敌方英雄造成多少点伤害。



输入

第一行为一个正整数T,表示有T组数据。

每组数据第一行有1个整数: n表示当前拥有的法力水晶个数0<=n<=10

第二行为四个整数a,b,c,d分别表示拥有寒冰箭、冰枪术、火球术、炎爆术的数目。0<=a,b,c,d<=10.

输出

一个整数表示最大可能造成的伤害值。

样例输入

2
9
0 0 3 0
5
2 2 1 1

样例输出

12
11

#include<iostream>
#include<stdlib.h>
#include<algorithm>
#include<cstdio>
using namespace std;
int T;
int n,a,b,c,d;
int main()
{
    scanf("%d",&T);
lp: while(T--)
    {
        int sum=0,p=0;  //表示伤害值
        scanf("%d%d%d%d%d",&n,&a,&b,&c,&d);
        if(n==1||n==0)
        {
            printf("%d\n",0);
            goto lp;
        }
        //四重循环
        int max=0;
        for(int i=0;i<=a;i++)
        {
            for(int j=0;j<=b;j++)
            {
                for(int k=0;k<=c;k++)
                {
                    for(int l=0;l<=d;l++)
                    {
                        p=i*2+j*1+k*4+l*10;
                        if(p<=n)
                        {
                           if(i>=1)
                           {
                                sum=i*3+j*4+k*6+l*10;
                                if(max<sum)
                                {
                                    max=sum;
                                }
                               // printf("%d\n",sum);
                           }
                           if(i==0)
                           {
                               if(j>=2)
                               {
                                   sum=(j-1)*4+k*6+l*10;
                                   if(max<sum)
                                   {
                                      max=sum;
                                   }
                               }
                               if(j>=0||j==1)
                               {
                                   sum=k*6+l*10;
                                   if(max<sum)
                                   {
                                      max=sum;
                                   }
                               }
                           }
                        }
                    }
                }

            }
        }
        printf("%d\n",max);
        //什么都不要考虑,最后判断一下法力水晶有木有超,还有冰冻
    }
}

暴力求解,谢谢CSS指点!

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted on 2015-03-29 19:43  Tob__yuhong  阅读(180)  评论(0编辑  收藏  举报

导航