打Boss

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;
}