Codeforces Round #700 (Div. 2) B(简单思维)

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

上一篇:leetcode 700. 二叉搜索树中的搜索


下一篇:centos7登录改用证书ssh