思路:本题的核心转化:即使打败完所有敌人后英雄再死亡也可以,这就等于英雄在受到致命伤害后可以免疫一次,如果能想到这个这题就简单了。
计算英雄攻击回合数的公式:怪物血量/英雄攻击力,上取整
Code:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N = 1e5+10;
typedef long long LL;
typedef pair<LL, LL> PII;
PII q[N];
void solve()
{
LL d,h,n;
cin>>d>>h>>n;
LL mmax=-1;
for(int i=0;i<n;i++) cin>>q[i].first,mmax=max(mmax,q[i].first);
for(int i=0;i<n;i++) cin>>q[i].second;
LL sum=0;
for(int i=0;i<n;i++)
{
int t=(q[i].second)/d;
if(q[i].second%d) t++;
sum+=q[i].first*t;
}
if(sum-mmax<h) puts("YES");
else
puts("NO");
}
int main()
{
int _;
cin>>_;
while(_--) solve();
return 0;
}