Codeforces Round #700 (Div. 2) B. The Great Hero

https://codeforces.com/contest/1480/problem/B

最后杀哪个怪?
当然是最后杀攻击最高的怪。
因为杀了这个怪可能就同归了,如果先杀攻击高的怪,可能其他小怪还没杀就和这个大怪同归了。

最后一刀给攻击最高的怪,如何计算最后一刀之前英雄血量的状态呢?
相当于先打败所有怪,再把最后一刀掉的血加上(加上一个最高伤害)

最后一刀之前,只有英雄还活着,它就能杀出这最后一刀,即为杀死所有的小怪。

复制代码
//
// Created by w on 2021-02-08.
//

#include <iostream>
#include <algorithm>
#include <cstring>

typedef long long ll ;
struct gs //怪兽
{
    ll a,b;

}ggs[100010];

using namespace std;
int main()
{
    ll N;
    cin>>N;
    while (N--)
    {
        ll A,B,n;
        cin>>A>>B>>n;
        ll maxsh = 0;
        for (int i = 0; i < n; ++i)
        {
            cin>>ggs[i].a;
            maxsh=max(maxsh,ggs[i].a);
        }
        for (int i = 0; i < n; ++i) {
            cin>>ggs[i].b;
        }
        for (int i = 0; i <n ; ++i) {
            //times是需要攻击小怪兽的次数
            ll times=ggs[i].b/A+(ggs[i].b%A!=0);
            /*times
            首先times=ggs[i].b/A是向下取整
            接下来如果(ggs[i].b % A != 0),则括号里为true(1),正好为向上取整
            */
            B-=times*ggs[i].a;
        }
        B+=maxsh;//恢复到最后一刀之前的状态进行判断
        if(B<=0)//最后一刀之前血量为0,坎不出最后一刀
            puts("NO");
        else//否则能砍出最后一刀
            puts("YES");
    }
    return 0;
}
复制代码

 

posted @   BlackSnow  阅读(73)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示