大吉大利,今晚吃鸡——跑毒篇

本文探讨了一款流行游戏PlayerUnknown’s Battlegrounds中的生存问题。玩家需要在限定时间内使用有限资源,通过合理策略,安全抵达安全区域。文章提供了一个算法解决方案,并附带示例代码。

摘要生成于 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”。

输入:
3
1 100 2
6 31 2
7 31 2

输出:
YES
YES
NO

说明:非常简单的一道题,主要考察逻辑思维能力。

#include<stdio.h>
int main()
{
    int T,a,b,c,i,j;
    scanf("%d",&T);
    for(i=0; i<T; i++)
    {
        scanf("%d%d%d",&a,&b,&c);
        for(j=100;;)//我们定义血量是j,那么初始血量为100
        {
            if(b<=6)//由于我们接下来的步骤中具有对血量的判断,这里的血量确定大于或等于6*a的
            {
                printf("YES\n");
                break;
            }
            if(j<=7*a)//这里判断我们是否需要使用急救包,血量过高时打包会使急救包利用不够充分
            {
                if(j<=6*a)//如果血量小于6*a,打包也来不及了,所以直接输出NO
                {
                    printf("NO\n");
                    break;
                }
                if(c>0)//如果有急救包,并且血量大于6*a,可以打包回血
                {
                    j=80;
                    c=c-1;
                }
            }
            b=b-1;//我们的跑动速度是1m/s,所以距离-1
            if(b<=0)//当距离小于等于0时,说明我们成功进入安全区
            {
                printf("YES\n");
                break;
            }
            j=j-a;//扣血
            if(j<=0)//如果血量小于等于0,人物死亡
            {
                printf("NO\n");
                break;
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值