题目:

小青蛙住在一条河边, 它想到河对岸的学校去学习。小青蛙打算经过河里 的石头跳到对岸。

河里的石头排成了一条直线, 小青蛙每次跳跃必须落在一块石头或者岸上。 不过, 每块石头有一个高度, 每次小青蛙从一块石头起跳, 这块石头的高度就 会下降 1 , 当石头的高度下降到 0 时小青蛙不能再跳到这块石头上(某次跳跃 后使石头高度下降到 0 是允许的)。

小青蛙一共需要去学校上 x 天课, 所以它需要往返2x 次。当小青蛙具有 一个跳跃能力 y 时, 它能跳不超过 y 的距离。

请问小青蛙的跳跃能力至少是多少才能用这些石头上完 x 次课。

输入格式

输入的第一行包含两个整数 n,x, 分别表示河的宽度和小青蛙需要去学校 的天数。请注意 2x 才是实际过河的次数。

第二行包含 n−1 个非负整数H1​,H2​,⋯,Hn−1​, 其中Hi​>0 表示在河中与 小青蛙的家相距 i 的地方有一块高度为 Hi​ 的石头, Hi​=0 表示这个位置没有石 头。

输出格式

输出一行, 包含一个整数, 表示小青蛙需要的最低跳跃能力。

样例输入

5 1
1 0 1 0

样例输出

4

样例说明

由于只有两块高度为 1 的石头,所以往返只能各用一块。第 1 块石头和对岸的距离为 4,如果小青蛙的跳跃能力为 3 则无法满足要求。所以小青蛙最少需要 4 的跳跃能力。

评测用例规模与约定

对于30% 的评测用例, n≤100;

对于 60% 的评测用例, n≤1000;

对于所有评测用例, 1≤n≤105,1≤x≤109,1≤Hi​≤104 。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 512M

代码: 

import java.util.Scanner;public class Main {static int n,x;                  //河的宽度和上学的天数public static void main(String[] args) {Scanner sc=new Scanner(System.in);int sum=0;n=sc.nextInt();x=sc.nextInt();int[] H=new int[n];          //储存石头的位置以及高度int[] b=new int[n];          //储存每块石头之前可以跳跃的次数for (int i=1;i<n;i++){H[i]=sc.nextInt();sum+=H[i];b[i]=sum;}int left=1,right=n,middle,S=0;  //二分法查找最小跳跃距离while(left<=right){middle=left+right>>1;       //>>是位运算符X+Y>>1相当于(X+Y)/2if (check(middle,b)){S=middle;right=middle-1;}else {left=middle+1;}}System.out.println(S);sc.close();}private static boolean check(int middle, int[] b) {   //查b集合的每个区间是否都有至少2*x个落脚点。for (int i=1;i+middle<=n;i++){if (b[i+middle-1]-b[i-1]<2*x){return false;}}return true;}
}

思路:这道题用了二分法的查找方法。

1.我们先进行一个转换,1只小青蛙去x天学校总共需要往返2*x次,转化为2*x只小青蛙过一次河。

2.我们将每块石头及之前石头可以跳跃的次数储存起来,以题目中给的例子为例,b[1]=1,b[2]=1,b[3]=2,b[4]=2。

3.采用二分法找最少跳跃距离,再一次次将midder(跳跃距离)在b集合的区间里找是否所有的区间都可以满足至少有2*x个落脚点(每次青蛙跳离一块石头后,之后的距离区间都要保证有2*x个落脚点,否则就会有青蛙跳不过去,所以要将所有区间都进行比较),如果可以先将midder储存起来(因为可能有更小的跳跃距离),再用二分法逐步比较,直到二分结束输出最终的最小跳跃距离。

蓝桥杯——青蛙过河(JAVA)相关推荐

  1. 蓝桥杯青蛙过河(动态规划)

    1. 问题描述: 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的 ...

  2. 22年蓝桥杯青蛙过河问题

    个人思路,不保熟,供批判. n, x = 5, 1 t = x << 1 h = [None, 1, 0, 1, 0, None] l = 0 r = ndef check(ability ...

  3. 2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数

    2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数 在线评测 Ideas 对于一个纯循环小数,假设循环节为l,则小数为0.llll-,转换为分数就是 l / (10 ** n ...

  4. 2013蓝桥杯java试题_蓝桥杯2013决赛java本科b组试题.doc

    蓝桥杯2013决赛java本科b组试题.doc 试题一:公式求值问题描述输入n,m,k,输出下面公式的值.其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数.组合数的计算公式如 ...

  5. java迷宫类编程题_第十届蓝桥杯省赛java类B组 试题 E:迷宫 (动态规划之回溯法)...

    问题描述 试题 E: 迷宫 [问题描述] 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方. 010000 000100 001001 110000 迷宫的入口为 ...

  6. 第十二届蓝桥杯省赛JAVA B组杨辉三角形个人题解

    第十二届蓝桥杯省赛JAVA B组杨辉三角形个人题解(非满分) import java.util.Scanner; public class Main {public static void main( ...

  7. 蓝桥杯-Sine之舞-java

    蓝桥杯-Sine之舞-java 题目 问题描述最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功.所以他准备和奶牛们做一个"Sine之舞"的 ...

  8. 蓝桥杯 拿金币 java实现

    蓝桥杯 拿金币 java实现(通俗易懂) 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 有一个N x N的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币.你站在最左 ...

  9. 蓝桥杯软件类Java语言IDE(Eclipse)安装

    蓝桥杯软件类Java语言IDE(Eclipse)安装以及个性化设置 平时都在用idea搞工程类项目,正好报了下学期的蓝桥杯算法比赛,看到官网要求用eclipse编码,之前也参加过ccf-csp的比赛, ...

最新文章

  1. Python之路【第十七篇】:装饰器
  2. 译文 | 与TensorFlow的第一次接触 第五章:多层神经网络
  3. python笔记之单行json数据组成的json文件按行解析:read_json()
  4. Mysql 分区(range,list,hash)转载
  5. 对360搜索引擎的评价
  6. Javac选项source和target的作用
  7. STC51单片机中断介绍
  8. 【Keil变量定义】定义extern类型变量
  9. python音频特征提取_音频特征提取——常用音频特征
  10. 在word中公式后面插入标号的方法
  11. 微信停止为苹果服务器,苹果手机终于解决了微信延迟
  12. 快播将关闭QVOD服务器 清理低俗和盗版内容
  13. 2023最新素材解析网站源码搭建和原理,附带PHP小例子。
  14. NR PRACH(六) type 2(2-step) RA基本过程及时频域映射
  15. 「 LaTex 」写论文,修改公式内行距的方法
  16. pc端点击图片放大效果
  17. centos安装python3.X,系统默认2.7.5
  18. Redis核心解读–集群管理工具(Redis-sentinel)
  19. PHP把html代码转换成普通字符串,在页面中显示
  20. 来一个LM1875T

热门文章

  1. winsever 2008 r2 管理员账号没有权限_账号被泄密!跨境电商卖家如何保障账户安全?...
  2. Lazada新手批量发布产品快速铺货详细教程:
  3. 开源项目推荐:OpenGL之gult/freeglut/glew/glfw/glad的联系与区别
  4. 照片透明背景抠图怎么做?试试这几种抠图方法
  5. windows调整窗口大小_175 Windows 7调整,提示和操作方法文章
  6. linux开组态软件,基于嵌入式Linux的组态软件实时数据库的设计
  7. 阿里云服务器搭载code-server
  8. 【PyG】与networkx的图转换
  9. oracle scott 关系图,oracle下scott用户的四张表(emp,dept,bonus,salgrade)的建表语句:
  10. 访问局域网内SQL Server数据库方法