1007 Climb Stairs (贪心 | C思维)

题意

小明要爬一个n层的楼,每一层都一个生命值为hi的怪。只有小明的攻击力a>=血量h的时候才能消灭这只怪兽。如果小明消灭了这只怪兽,他会吸收他的生命值等量地转化为自己的攻击力。初始小明在第0层,有攻击力a0。

小明有两种行动方式

一是向上传送i格,i<=k;二是向下走1格。一个楼层不能被爬2次

现在小明想爬到楼顶并消灭所有的怪兽,问小明能不能办到。

思路

分段处理。由于题目要求必须把所有怪物打完,所以跳过的怪物还必须得走回去打败才行。我们要从当前位置x, 找到一个右端点r,使得可以按照r,r-1,r-2,x的顺序打败这一段的怪物。不难看出r更小的 时候不会更劣。

贪心。从后往前贪心。最远可以从 i + k - 1(相当于是小明跳到 i  + k - 1之后一直往下走,走到 i 还能在跳跃到 i + k 层) 开始贪心,贪不动了就重置value(跳过这个硬骨头一会处理,先处理当前a[i]这个硬骨头),缩小贪心的范围,目的是为了使value >= a[i],如果达不到就输出NO

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int n,w,k;
void solve()
{
    cin >> n >> w >> k;
    std::vector<int> a(n + 1);
    for (int i = 1; i <= n; i++ ) cin >> a[i];
    for (int i = 1; i <= n; i++ ) {
        if(a[i] <= w) {
            w += a[i];
        } else {
            bool ok = false;
            int j = min(n, i + k - 1);
            int value = w;
            for (int z = j; z >= i; z -- ) {
                if(a[z] <= value) {
                    value += a[z];
                    if(z == i) {
                        ok = true;
                    }
                } else {
                    value = w;
                    j = z;// i = j;;
                }
            }
            if(ok) {
                i = j;
                w = value;
            } else {
                cout << "NO\n";
                return;
            }
        }
    }
    cout << "YES\n";
}


int main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int t;
    cin >> t;
    while(t--) {
        solve();
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
只上攀是一个非常有趣和创新的整蛊直播搭建工具和教程。它为用户提供了一个简单而有趣的平台,可以让他们体验整蛊直播的乐趣和刺激。 整蛊直播是一种流行的网络娱乐形式,通过演绎故事和设置整蛊情节,可以给观众带来笑声和惊喜。只上攀是一个专门为创建整蛊直播场景和故事情节而设计的工具和教程。 这个工具提供了丰富的场景和故事模板,用户只需要根据自己的需求选择合适的模板,然后根据提示进行设置和编辑就可以轻松搭建整蛊直播场景。同时,还可以自定义角色和对白,以及添加音效和特效,从而增强整蛊效果。 只上攀的教程则提供了详细的指导和技巧,帮助用户了解如何利用这个工具进行整蛊直播。教程包括了从基础知识到高级技巧的内容,让用户可以逐步学习和掌握整蛊直播的技巧和方法。 只上攀的优势不仅仅在于它提供了简单易用的搭建工具,还在于它丰富多样的教程内容。无论用户是初学者还是有经验的直播主,都可以从中获得帮助和灵感。 总之,只上攀是一个非常有趣和实用的整蛊直播搭建工具和教程。它能帮助用户轻松搭建整蛊直播场景,并提供详细的教程和技巧,让用户可以掌握整蛊直播的技巧和方法。无论是想要尝试新鲜事物的初学者,还是有经验的直播主,只上攀都是一个值得一试的工具和教程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值