GDOI模拟 蜘蛛侠

本文探讨了一种高楼跳跃问题的解决思路,通过分析弹簧覆盖区域的概念来确定可达的最大高楼数量。文章提出两种情况下的解决方案,并提及了使用Tarjan算法的可能性。

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

题目大意

给你n座大楼的高度,你只能跳到相邻高楼上并且要保证跳到的楼的高度必须不能大于现在处在的楼的高度。除此之外,还会一些高楼上有弹簧,从这些高楼起跳,能跳到任何其他的高楼。给你一个起始高楼的位置,问最多能跳到多少幢高楼?(包括起始高楼)一座高楼可以经过多次,但只计算一次。
n<=300000) 时限500ms

我们可以知道从弹簧开始向左右两边扩展,一段连续的不下降序列是可以跳到并且是可以跳回弹簧的,我称这种区域叫”弹簧的覆盖区域“,易得所有的弹簧覆盖区域可以相互到达。
倘若起始位置在弹簧的覆盖区域,那么答案就是弹簧覆盖区域的大小非弹簧覆盖区域外加上最长的一段不上升或不下降序列的长度。
若起始位置不在弹簧的覆盖区域,答案就是最长的一段不上升或不下降序列的长度。

这只是其中一种解法,你还可以用Tarjan算法来做。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值