要保证能从起点到达终点,只要保证能够跨越相邻可立足位置(起点、有垫子的方格、终点)之间的最大间距即可,这就是答案。
def find_minimum_max_step(n, river):
last_stone = -1
你正站在一条由 n 个连续方格构成的走廊起点。起点位于第 1 个方格之前(你可以认为起点位置是 0),终点位于第 n 个方格之后(你可以认为终点位置是 n+1)。某些方格上铺有稳固的垫子,可以踩踏;另一些方格为空洞,无法立足。你只允许从当前位置向前跳跃,并只能落在有垫子的方格、起点或终点上。
给定一个长度为 n 的序列 a1,a2,…,an,其中 ai=1 表示第 i 个方格上有垫子,ai=0 表示该方格为空洞。你需要从起点到达终点。在能够到达终点的前提下,你希望让整个过程中单次跳跃的最大距离尽量小。
一次跳跃的距离定义为落点位置编号与起跳位置编号的差值。若你从位置 u 跳到位置 v(u<v),则本次跳跃距离为 v−u。请计算在保证能从起点到达终点的所有策略中,最大跳跃距离的最小可能值。
约束:走廊的方格数 n 满足 1≤n≤2×105,序列中的每个元素均为 0 或 1。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.