青蛙过河。

2024-03-06 04:12
文章标签 青蛙 过河

本文主要是介绍青蛙过河。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

!!!思路和代码源自蓝桥云课大佬题解
问题描述
小青蛙住在一条河边,它想到河对岸的学校去学习。小青蛙打算经过河里的石头跳到对岸。
河里的石头排成了一条直线小青蛙每次跳跃必须落在一块石头或者岸上。 不过,每块石头有一个高度,每次小青蛙从一块石头起跳,这块石头的高度就会下降1当石头的高度下降到0时小青蛙不能再跳到这块石头上(某次跳跃后使石头高度下降到0是允许的)。
小青蛙一共需要去学校上 天课,所以它需要往返2次。当小青蛙具有一个跳跃能力y时它能跳不超过的距离。
请问小青蛙的跳跃能力至少是多少才能用这些石头上完a次课。
输入格式
输入的第一行包含两个整数n,a,分别表示河的宽度和小青蛙需要去学校的天数。请注意2才是实际过河的次数。
第二行包含n-1个非负整数 H1, H2,··,Hn-1,其中H,>0表示在河中与小青蛙的家相距的地方有一块高度为H;的石头,H;0表示这个位置没有石头。
输出格式
输出一行,包含一个整数,表示小青蛙需要的最低跳跃能力。
样例输入

5 1

1 0 1 0

输出

4

import os
import sys# 请在此输入您的代码n,x=map(int,input().split())
H=list(map(int,input().split())) #n-1个
sum_H=[0]*n
for i in range(1,n):sum_H[i]=sum_H[i-1]+H[i-1]   #从sum_H[1]到sum_H[n-1],总共n-2个def check(y):for i in range(n-y):  #最后一跳站在n-y的位置上if sum_H[i+y]-sum_H[i]<2*x:return Falsereturn True  #所有都大于才是正确, # 所有位置都满足条件才返回Truel,r=1,n
while(l<=r):mid=(l+r)//2if check(mid):  #高度大于2x,缩减到左半部分(求最低跳跃能力)r=mid-1else:l=mid+1if check(r):print(r)
else:print(r+1)

这篇关于青蛙过河。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/778807

相关文章

笔试强训,[NOIP2002普及组]过河卒牛客.游游的水果大礼包牛客.买卖股票的最好时机(二)二叉树非递归前序遍历

目录 [NOIP2002普及组]过河卒 牛客.游游的水果大礼包 牛客.买卖股票的最好时机(二) 二叉树非递归前序遍历 [NOIP2002普及组]过河卒 题里面给的提示很有用,那个马的关系,后面就注意,dp需要作为long的类型。 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息publ

A*算法解决传教士—野人过河问题

A*算法解决传教士—野人过河问题 算法原理 1、A算法的基本原理分析; 在或图的一般搜索算法中,如果在搜索过程的步骤⑦利用估价函数f(n)=g(n)+h(n)对open表中的节点进行排序,则该搜索算法为A算法。 g(n):从初始节点到n的实际代价 因为n为当前节点,搜索已达到n点,所以g(n)可计算出。 h(n):启发函数,从n到目标节点的最佳路径的估计代价。 因为尚未找到解路径,所以h(n)

青蛙跳台阶与汉诺塔问题

hello,各位小伙伴们上次我们复习了C语言小tip之函数递归,这次我们来使用函数递归来完成青蛙跳台阶和汉诺塔问题! 青蛙跳台阶问题 青蛙跳台阶问题:一只青蛙跳n阶台阶,一次可以跳1阶或者两阶,问有多少种情况! 如果跳1节台阶的话,只有一种情况,如果跳2节台阶的话,有两种情况一次跳一阶,或者一次性跳两阶。如果跳3节台阶的话,可以选择一次跳一节,或者第一次跳一节,第二次跳两节或者第一次跳两节,

过河卒---记忆化搜索

题目描述 Description  如图,A 点有一个过河卒,需要走到目标 B 点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 C 点上的马可以控制 9 个点(图中的P1,P2 … P8 和 C)。卒不能通过对方马的控制点。   棋盘用坐标表示,A 点(0,0)、B 点(n,m)(n,

趣味算法------过河卒

目录 ​编辑 题目描述 解题思路 具体代码 总结 问题描述: 解决方案: 代码实现: 关键点: 题目描述 棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示,A 点(0,0)  、B 点(n

P1516 青蛙的约会(exgcd)

一些前置知识: 1.扩展欧几里得算法:                                          ax+by=gcd(a,b) 方程一个可行的解(x1,y1)求法: int exgcd(int a,int b,int &x,int &y){if(!b){x=1,y=0; return a;}int d=exgcd(b,a%b,y,x);y-=a/b*x;ret

POJ-1061 青蛙的约会-数论扩展欧几里德算法入门及推导

Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的

青蛙的约会——模线性方程

青蛙的约会 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit  Status  Practice  POJ 1061 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自

POJ1061 青蛙的约会(数论 扩展欧几里得算法)

青蛙的约会 Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 95323 Accepted: 17713 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有