据霍金的《时间简史》所述,在几亿年之后将再次发生宇宙大爆炸。在宇宙大爆炸后,地球上将新生出许多生物而不再适合人类生存。当然其中的生物有好有坏,我们规定其中名叫Angel和Devil分别是善良和邪恶的两种生物。
? 所以当主人公Be.St遇到了Angel他将获得该Angel身上的相应HP的一半,而当他遇到Devil时他将损失Devil身上的HP的一半。
? 当然,在将要逃离地球的终点Be.St可能会遇到一些大Boss,如果此时他的HP连Boss 的HP一半都不到,那么此时他将直接被秒杀。但当其HP不小于Boss HP的一半时,他将会经过激烈的战斗而获得Boss身上相应HP的一半。
? 我们规定如果Be.St的HP不小于0,则其能成功脱逃,否则视为不能。
? 为了是问题简化我们童话一点,假设一开始Be.St是一直遇到Angel,之后将一直遇到Devil,最后将会是Boss。
现在就请厉害的ACMer帮帮可怜的Be.St,判断他是否能够顺利逃离地球。
2
5 3 4 1
1 2 3
1 1 1 1
14
10 4 2 2
2 3 5 1
6 7
6 6
LoseWin
注意:HP要用double类型的,另外Boss出现的顺序是不固定的!
AC码:
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; int main() { int T,a,b,d; int sum,i; double m,h,Boss[105]; scanf("%d",&T); while(T--) { scanf("%lf%d%d%d",&h,&a,&d,&b); for(i=0;i<a;i++) { scanf("%lf",&m); h+=m/2; } for(i=0;i<d;i++) { scanf("%lf",&m); h-=m/2; } for(i=0;i<b;i++) { scanf("%lf",&Boss[i]); } sort(Boss,Boss+b); for(i=0;i<b;i++) { if(2*h<Boss[i]) { printf("Lose\n"); break; } h+=Boss[i]/2; } if(i>=b) printf("Win\n"); } return 0; }
原文:http://blog.csdn.net/u012804490/article/details/25276977