B
思路:
骑士有一个生命值,先把所有怪兽的伤害值减掉,然后加上所有怪兽的最大攻击值,判断其与0的大小。为什么呢?可能最后一次骑士打死怪兽之后就会死亡,只要加上最大的攻击值就会回到进行最后一次攻击前的状态,如果此时骑士的生命值大于0,就可以打死所有怪兽。
注意:数据要开ll,因为乘法会爆int
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int ,int> pii;
const int N = 1e5+5;
ll a[N],b[N];
ll A,B,n;
void solve()
{
cin>>A>>B>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) cin>>b[i];
for(int i=1;i<=n;i++) B-=(b[i]+A-1)/A*a[i];
if((B+*max_element(a+1,a+1+n))>0) cout<< "YES\n";
else cout<< "NO\n";
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int _;cin>>_;
while(_--){
solve();
}
}