补了我一刀
针对这道题目,我们可以想出以下几种特殊情况:
- 英雄攻击力大于等于小兵血,秒杀,Yes
- 防御塔攻击力大于等于小兵血,秒杀,No(因为排除第一种情况之后英雄不能秒杀)
- 英雄攻击力为0,No
- 防御塔攻击力为0,Yes(因为特判掉第三种情况之后英雄攻击力肯定不为0)
把这些情况特判之后,不难想出,
我们让防御塔能打几下是几下,把小兵的血磨掉,这时,英雄能够造成的总伤害就是防御塔攻击的次数乘上英雄的伤害,只需要判断,总伤害能不能斩杀小兵就行了。
对了,还要注意一点,如果防御塔刚好把小兵的血打没了,那就让防御塔少打一次,但因为英雄可以在防御塔第一次攻击小兵之前,或者每次防御塔攻击之后对小兵进行一次攻击,所以英雄攻击的次数不变。并且注意一定要先特判英雄攻击力再特判防御塔攻击力,不然会有英雄和防御塔攻击力均为0的情况,也会输出 Yes
好了,说了这么多,贴上我的代码:
#include<bits/stdc++.h>
#define no {printf("No\n");continue;}
#define yes {printf("Yes\n");continue;}//宏定义
using namespace std;
int main(){
long long n,x,y,h,da;
cin>>n;
while(n--){
cin>>h>>x>>y;
if(y>=h)
yes
if(x>=h)
no
if(y==0)
no
if(x==0)
yes
da=h/x+1;//计算英雄攻击的次数
h%=x;
if(h==0)h=x;
if(da*y>=h)
yes
else
no
}
return 0;
}