NC200520. 打 boss
描述
玩家正在与怪物 boss 对战,玩家有血量 HP1 、攻击力 ATK1 ,boss 有血量 HP2 、攻击力 ATK2 、每回合回血量 M。
请判断玩家能否将 boss 打败,即是否存在任意时刻满足 boss 血量 且玩家血量
。
输入描述
第一行一个整数 T ,表示数据组数。
接下来 T 行,每行五个整数,分别表示 HP1 、 HP2 、 ATK1 、 ATK2 、M,均为正整数且不超过
。
保证
。
输出描述
每组数据输出一行一个字符串,玩家能将 boss 打败 ,输出 Yes ,否则输出 No 。
示例1
输入:
2 100000 2 2 20 2 114514 1919810 1 1 1
输出:
Yes No
说明:
C(clang 3.9) 解法, 执行用时: 226ms, 内存消耗: 1016K, 提交时间: 2020-01-22 14:26:11
#include<stdio.h> int main() { int t; scanf("%d",&t); for(int i=0;i<t;i++) { long long hp1,hp2,atk1,atk2,m,a=0; scanf("%d%d%d%d%d",&hp1,&hp2,&atk1,&atk2,&m); if(hp1%atk2!=0) a=1; a+=hp1/atk2; if(hp2<=atk1) puts("Yes"); else if(a*atk1>=hp2+(a-1)*m) puts("Yes"); else puts("No"); } return 0; }
C++14(g++5.4) 解法, 执行用时: 159ms, 内存消耗: 8672K, 提交时间: 2020-03-31 21:24:50
#include<cstdio> int T,hp1,hp2,at1,at2,m; int main(){ scanf("%d",&T); while(T--){ scanf("%d%d%d%d%d",&hp1,&hp2,&at1,&at2,&m); if(hp2<=at1)puts("Yes"); else if(m>=at1)puts("No"); else if((hp2-at1-1)/(at1-m)<(hp1-1)/at2)puts("Yes"); else puts("No"); } return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 548ms, 内存消耗: 10784K, 提交时间: 2020-08-01 00:23:09
#include<bits/stdc++.h> #define ll long long using namespace std; int main() { ll t,a,b,c,d,e; cin>>t; while(t--) { cin>>a>>b>>c>>d>>e; if(b<=c)cout<<"Yes"<<endl; else if(e>=c)cout<<"No"<<endl; else if((b-c-1)/(c-e)<(a-1)/d)cout<<"Yes"<<endl; else cout<<"No"<<endl; } }
Python3(3.5.2) 解法, 执行用时: 1627ms, 内存消耗: 6976K, 提交时间: 2020-04-09 19:42:13
for ___ in [0] * int(input()): h1, h2, a1, a2, m = map(int, input().split()) suc = False if a1 >= h2: suc = True if (h1 + a2 - 1) // a2 * (a1 - m) + m >= h2: suc = True print('Yes' if suc else 'No')