#牛客网 大吉大利,今晚吃鸡——跑毒篇 (模拟)

博客围绕“吃鸡”游戏跑毒问题展开,已知安全区外每秒掉血比例、角色与安全区距离、跑步速度及急救包数量,需判断角色能否安全跑进安全区。给出了题目大意,强调生命减少优先级大于急救包补血,还提及解题思路及AC代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 

题目描述

    现在有一款很火的游戏playerunknown's battlegrounds,人称“吃鸡”,在里面经常面临跑毒(从安全区外跑进安全区内)的问题,在安全区外,人们会处于中毒状态,每秒会掉a%血,人们可以通过使用道具急救包把血量升回到80%,使用急救包需要原地站着6秒。现在知道在安全区外扣血速度为a%/s,角色和安全区的距离为b米,角色跑步速度为1m/s,角色有c个急救包,请问角色是否能安全跑进安全区内。(PS:角色开始的血量为100%。如果血量降到0%,立刻判定为死亡。使用急救包时,如果刚使用完毕瞬间或者正在使用急救包的时候,血量降到0%,角色立即判定为死亡。顺带一提,这里判断时间不存在0.xxxx秒,最小时间单位为1s)

输入描述:

第一行是样例数T(T<9)
第2到2+T-1行每行有三个整数a b c,其中a为安全区外的扣血速度a%/s,b为角色和安全区的距离,c为急救包的数量。

输出描述:

如果角色能进入安全区输出“YES”。
若角色在安全区外死亡输出“NO”。

示例1

输入

 

3
1 100 2
6 31 2
7 31 2

输出

 

YES
YES
NO

说明

当a=6,b=31,c=2时,
0s起跑,10s的时候角色跑了10M,血量剩下40%,开始使用急救包,16s的时候,角色血量先降到4%再恢复到80%,然后角色继续跑步。23s的时候,角色跑了17M,剩余血量为38%,开始使用急救包,29s的时候,角色血量先降到2%再恢复到80%,然后角色继续跑步。42s的时候,角色跑了30m,血量剩余2%。当43s的时候,角色跑了31m进入了安全区内,不再扣血。

备注:

对于100%的数据,
1 <= T < 9;
0 < a <= 20;
0 < b <= 120;
0 <= c <= 8。

题目大意 : 初始生命值是100,每秒损失a点血量,由c个急救包,和安全区的距离为b,求能否跑到安全区,生命减少的优先级大于急救包补血的优先级。

思路 : 按照他说的模拟就行了,如果你不使用急救包,下一步再补就来不及的时候开始补急救包,如果这时候没有急救包,看能否直接到达安全区,注意这两个要点就好

AC代码 :

#include<bits/stdc++.h>
using namespace std;

int a, b, c, T;

int main()
{
    cin >> T;
    while (T--) {
        cin >> a >> b >> c;
        int ans = 0, left = 100, flag = 1;
        while (b) {
            int tot = 0;
            if (7 * a >= left) {
                if (c) {
                    c--;
                    left = 80;
                    tot = 1;
                }
                else {
                    if (b <= 7) break;
                    else {flag = 0; break;}
                }
            }
            if (!tot)b--, left -= a;
        }
        if (flag) cout << "YES" << endl;
        else cout << "NO" << endl;
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值