#1752. 聂小倩

此算法题涉及一位角色小倩在限定时间内完成山路训练的问题。山路分为上坡、平地和下坡三种路段,每种路段有不同的通行时间。任务是在不超过规定时间的情况下,计算角色能够行走的最远距离。

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

快来吧,今天的题很有意思,代码也是!

看题!

Background

为了能逃脱姥姥的魔爪,尽快找到宁采臣,小倩在一条山路上开始了她的训练。

Description

小倩希望能在每次训练中跑得尽可能远,不过她也知道姥姥的一条规定:

女子独自进山的时间不得超过 秒(1≤M≤10,000,000)。

整条山路被小倩划分成 T 个长度相同的小段(1≤T≤100,000),并且,小倩用 S[i]​ 表示第个小段的路况。S[i​ ] u,f,d 这3个字母之一,它们分别表示第 i 个小段是上坡、平地,或是下坡。

小倩要花 U 秒(1≤U≤100) 才能跑完一段上坡路,跑完一段平地的耗时是 F 秒(1≤F≤100),跑完一段下坡路要花 D 秒(1≤D≤100)。

注意,沿山路原路返回的时候,原本是上坡路的路段变成了下坡路,原本是下坡路的路段变成了上坡路。

小倩想知道,在能按时返回的前提下,她最多能在这条山路上跑多远。

Format

Input

第1行,5个用空格隔开的整数:M,T,U,F,D。

第 2到T+1 行中,第i+1行为1个字母S[i],描述了第 i 段山路的路况。

Output

输出一个整数,为小倩在按时回到的前提下,最多能跑到多远。

Samples

输入数据 1

13 5 3 2 1 
u 
f 
u 
d 
f

Copy

输出数据 1

3

Copy

Hint

输入说明:

小倩跑步的最大耗时为 13 秒(这么短...),她跑步的山路一共被划成 5 段。 小倩跑完一段上坡路的耗时为 3 秒,平地为 2 秒,下坡路为 1 秒。山路各段的走向如下图所示:

 

输出说明:

小倩跑完山路的前 3 段,然后返回,总耗时为 3 + 2 + 3 + 1 + 2 + 1 = 123+2+3+1+2+1=12 秒,只比她能在外面呆的时限少 1 秒。如果她跑得更远,就无法按时返回。

Limitation

1s, 1024KiB for each test case.

---------------------------------------------------------------------------------------------------------------------------------

怎么样,有趣吧。

这道题是个竞赛题目,会了这道题是很有用滴😄。

耐心看下去吧,最后有彩蛋哦。

分析一下,这题要输入很多字母,建立一个char数组。

const int N=100007;

char s[N];

然后建一个time表示需要的总时间,建一个maxT表示一共能走多少段路。

int time=0;
int maxT=0;

然后一个for循环,里面来三个判断,判断s[i]是上坡、下坡还是平地和他的总时间有没有超过“姥姥的魔爪”。

上代码前先来段广告:

本题来自 沐枫oj

有兴趣的小伙伴可以去看看。

点击进入~

顺便提一句,我这次的代码被誉为“程序最短代码”称号,沐枫oj创始人亲自颁发哦~

废话不多说,上代码! 

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

const int N=100007;

char s[N];

int main(){
	int k;
	int n;
	int a,b,c;
	cin>>k>>n>>a>>b>>c;
	for(int i=1;i<=n;i++)cin>>s[i];
	int time=0;
	int maxT=0;
	for(int i=1;i<=n;i++){
		if(s[i]=='u'&&(k-time)>(a+c))time+=a+c;
		else if(s[i]=='f'&&(k-time)>(b*2))time+=b*2;
		else if(s[i]=='d'&&(k-time)>(c+a))time+=c+a;
		else break;
		maxT++;
	}
	cout<<maxT;
}

是不是很短?好了,彩蛋来喽。

你们知道这道题的背景是怎么来的吗?

知道的请评论,让我康康。

不知道的请三连,让我康康。

揭秘答案啦:

这道题的聂小倩、姥姥和宁采臣都来自《聊斋》这本书,专门讲恐怖故事。

书里的聂小倩是一个女鬼、姥姥是一个树精、宁采臣呢?当然是个人了。

大家应该都知道,妖族和人族在故事里向来是对手,这里也是。

姥姥为了让聂小倩变强,命令她去把宁采臣抓来,吃了。但是聂小倩不想伤害宁采臣,反而想要救他(狗血剧情)。于是聂小倩就每天在山里练功、变强。但是姥姥对她很严格,让她每次必须在指定时间内回来,否则就认为她实在偷懒或是想逃跑。

所以就有了是这道题。想了解更多的话,自己去查吧……

拜拜~ヾ(•ω•`)o

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值