NYOJ 660 逃离地球

来源:互联网 发布:鳗鱼 鳝鱼 知乎 编辑:程序博客网 时间:2024/05/11 21:38

据霍金的《时间简史》所述,在几亿年之后将再次发生宇宙大爆炸。在宇宙大爆炸后,地球上将新生出许多生物而不再适合人类生存。当然其中的生物有好有坏,我们规定其中名叫AngelDevil分别是善良和邪恶的两种生物。

所以当主人公Be.St遇到了Angel他将获得该Angel身上的相应HP的一半,而当他遇到Devil时他将损失Devil身上的HP的一半。

<!--[if !supportLists]-->Ø<!--[endif]-->当然,在将要逃离地球的终点Be.St可能会遇到一些大Boss,如果此时他的HPBossHP一半都不到,那么此时他将直接被秒杀。但当其HP不小于Boss HP的一半时,他将会经过激烈的战斗而获得Boss身上相应HP的一半。

我们规定如果Be.StHP不小于0,则其能成功脱逃,否则视为不能。

为了是问题简化我们童话一点,假设一开始Be.St是一直遇到Angel,之后将一直遇到Devil,最后将会是Boss

现在就请厉害的ACMer帮帮可怜的Be.St,判断他是否能够顺利逃离地球。

 

输入第一行输入一个正整数T,代表有T组测试数据(0<T<100)
每一组测试数据第一行都有四个正整数H,A,D,B分别代表Be.St初始HP,Angel的数量,Devil的数量,Boss的数量。从第三行开始其后的的每一行分别代表A,D,B相应生物的HP(0<H,A,B,D<100)
输出如果在满足以上的条件后,Be.St可以顺利的逃离地球(即HP>=0),则输出”Win”,相反的情况是输出”Lose”。

样例输入

25 3 4 11 2 31 1 1 11410 4 2 22 3 5 16 76 6

样例输出

Lose
Win
 
简单题,不过有很多细节需要注意。首先,主人公的血量要用double型的。因为打boss的时候不是被秒杀,就是获得boss一半的血量,所以啦,肯定是先调血少的boss打啦。。。最后,主人公在血量为0的时候也不死哦~(好屌啊。。~)
 
#include <stdio.h>#include <stdlib.h>intcomp (constvoid*a,constvoid*b ){    return* (int* ) a - * (int* ) b;}intmain(){    intt;    inti;    scanf("%d",&t);    inta,d,b;    doubleh;    intan[100];    intde[100];    intbo[100];    intsign;    while(t--)    {        sign=1;        h=0;        scanf("%lf%d%d%d",&h,&a,&d,&b);            //初始化 Hp,Angel,Devil,Boss        for(i=0;i<a;i++)        {            scanf("%d",&an[i]);            h+=an[i]/2.0;        }        for(i=0;i<d;i++)        {            scanf("%d",&de[i]);            h-=de[i]/2.0;            if(h<0)                sign=0;         }        for(i=0;i<b;i++)            scanf("%d",&bo[i]);         qsort(bo,b,sizeof(int),comp);             for(i=0;i<b;i++)            {                if(h<bo[i]/2.0)                {                    sign=0;                    break;                }                else                    h+=bo[i]/2.0;            }         if(sign)            printf("Win\n");        else            printf("Lose\n");      }    return0;}

0 0
原创粉丝点击