description:
题目说的很明显了
solution:
对于这种回合制问题 一般都采用让最后一回合来计算。
首先特判一些特殊情况 :
1.玩家一下就可把Boss打死 输出Yes
2.Boss一下就可把玩家打死 输出No
3.玩家的攻击力还没回血高 输出No
然后我们计算一下玩家能挺过多少轮 很明显是除一下 取模一下
采用刚刚提到的让最后一回合 其余的回合都是ak1 - m 攻击减去回血 最后一回合除去回血 因为如果你已经打死Boss就不能回血了
否则下一步你就已经死了 如果造成的伤害大于血量就代表成功 否则失败
code:
#include <bits/stdc++.h> using namespace std; #define LL long long int main(){ int t; cin >> t; while(t --){ LL hp1,hp2,ak1,ak2,m; cin >> hp1 >> hp2 >> ak1 >> ak2 >> m; if(ak1 >= hp2){ puts("Yes"); }else if(ak2 >= hp1){ puts("No"); }else if(m >= ak1){ puts("No"); }else{ LL x = hp1 / ak2; LL y = hp1 % ak2; if(y){ if(x * (ak1 - m) + ak1 >= hp2){ puts("Yes"); }else{ puts("No"); } }else{ if((x - 1) * (ak1 - m) + ak1 >= hp2){ puts("Yes"); }else{ puts("No"); } } } } return 0; }