题意:有一只怪兽最开始有h的HP 现在我进行攻击 每次攻击扣a点血 扣完血后这回合这个怪又会回b点血 连续攻击k次后必须休息一回合 问我能不能杀死这只怪
解题思路:多校签到题 先特判一下第一回合在没回血之前我是不是已经能把它杀死了 之后除了攻击力大于回复能力的情况下有YES的情况 其他全为NO 具体看代码
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<iostream>
#include<map>
#include<set>
#include<queue>
#include<list>
#include<stack>
#include<vector>
#include<math.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
#define ll __int64
#define mem(a) memset(a,0,sizeof(a))
#define CLR(a, b) memset(a, b, sizeof(a))
#define INF 0x3f3f3f
int main(){
ll h,a,b,k;
int cas = 1;
while(scanf("%I64d%I64d%I64d%I64d",&h,&a,&b,&k) && (h + a + b +k)){
if(a >= h){
printf("Case #%d: YES\n",cas++);
continue;
}
if( a > b){
if(h - (k - 1) * (a - b) - a <= 0)
printf("Case #%d: YES\n",cas++);
else{
if(h - (k - 1) * (a - b) - a + 2*b < h)
printf("Case #%d: YES\n",cas++);
else
printf("Case #%d: NO\n",cas++);
}
}
else printf("Case #%d: NO\n",cas++);
}
return 0;
}