蓝桥杯 Java 青蛙过河

news2025/1/10 21:44:25

 

 

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

/**
  二分法从大(n)到小找足够小的步长
  前缀和记录每个位置的前面有的总石头数(一个石头表示可以容纳一个青蛙,一位置有多少个石头hi就是多少),方便计算
  相当于2x个青蛙从起点到终点
  起点0个石头,终点无数个石头,代表可以容纳无数个青蛙
  检查步长是否符合要求:
    对每个点检查
    如果这个点能跳到的区域内的石头数够2x(也就是下一步可以容纳2x个青蛙)(这一步用两个前缀和相减获得)
    如果当前点的可跳区域包含终点就相当于可以直接到终点,而前面肯定是算了可以到当前点的

  举例:
  按题目意思h就为
  0 1 0 1 0 INF
  前缀和就为
  0 1 1 2 2 INF

  如果步长为2
  那么先检查索引为0的点
  0 1 2 3 4 5
  可跳点为 1 2
  该区域总石头数为 1 - 0 = 1 < 2x
  也就是说青蛙如果在索引为0的点以当前步长能力无法跳到下一区域

  如果步长为4
  那么先检查索引为0的点
  0 1 2 3 4 5
  可跳点为 1 2 3 4
  该区域总石头数为 2 - 0 = 2 = 2x
  也就是说青蛙如果在索引为0的点以当前步长能力能跳到下一区域
  检查索引为1,该点可以直接跳到终点
  所以步长为4可以

  优化:
    前缀和不用考虑终点,终点直接利用长度判定即可
*/
public class Main {
    static int n,x;
    static int[] q;
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        n = scan.nextInt();
        x = scan.nextInt();
        q = new int[n];
        for(int i = 1;i < n;i++)
            q[i] = scan.nextInt() + q[i-1];
        
        int l=0;
        int r=n;
        // 二分法提高寻找最小区间(步长k=l)的效率
        while(l < r) {
            //如果该步长符合要求——该步长内的所有连续区间承受的跳跃次数>2*x
            //则缩小k
            int mid = (l + r)/2;
            if(check(mid))
                r = mid;
            //反之,扩大k
            else
                l = mid + 1;
        }
        //直到找到理论上最小就可以满足的步长K(==l)
        System.out.print(l);
        scan.close();
    }
    private static boolean check(int k) {
        //遍历所有步长为k的连续区间
        for(int i=0;i<n-k;i++)
            if(q[i+k]-q[i]<2*x)
                return false;
        return true;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1128446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023/10/24 MySQL学习

列表查询 in的用法,括号里面跟的应该是具体值,可填多个 select 表中变量名 from 表名 where 变量名 like ___... 一个下划线代表一个字符,多个就是多个字符 %号是任意多字符 %号的用法 %任意字符串 代表查找以这个字符串结尾的变量名 %任意字符串% 查找以这个字符串在变…

PPT放映时显示安全警告:已阻止OLE操作。如果选择启用OLE操作,您的计算机可能不再安全。如果不信任此演示文稿的来源,请不要启用此内容

PPT放映时显示安全警告&#xff1a;已阻止OLE操作。如果选择启用OLE操作&#xff0c;您的计算机可能不再安全。如果不信任此演示文稿的来源&#xff0c;请不要启用此内容。 ⚙️1.软件环境⚙️&#x1f50d;2.问题描述&#x1f50d;&#x1f421;3.解决方法&#x1f421;&#…

MS5192T/MS5193T——低噪声、低功耗、16/24 位∑-ΔADC

MS5192T/MS5193T 是一款适合高精度测量应用的低功耗、低 噪声、三通道差分输入的 16bit/24bit 模数转换器。其内部集成了 输入缓冲器、低噪声仪表放大器&#xff0c;当增益设置为 64 &#xff0c;更新速率为 4.17Hz 时&#xff0c;均方根噪声为 25nV 。集成了精密低噪声、低漂移…

ITSource 分享 第3期【在线个人网盘】

项目介绍 本期给大家介绍一个在线个人网盘 系统. 可以上传&#xff0c;下载&#xff0c;分享文件。 一 业务介绍 本系统分为以下几个模块: 1.登录注册 除了账号密码登录&#xff0c;如果配置了qq邮箱配置的话&#xff0c;还支持qq一键授权登录。 2.首页大盘 首页是个人网盘…

适用于物联网的UI设计工具都有哪些?

随着科学技术的飞速发展&#xff0c;“万物相连的互联网”时代逐渐成为现实。如今&#xff0c;物联网已经不是什么新词了。事实上&#xff0c;早在各种屏幕设备诞生之前&#xff0c;人们就与物理世界交织在一起&#xff0c;产生了无数的互动。如何将人们多年积累的互动经验与物…

APP采用原生开发还是混合开发好?

最近也有不少用户留言&#xff0c;问一些基础的内容&#xff0c;例如&#xff1a;App采用怎样的开发方式更好&#xff1f;便有感而发&#xff0c;希望通过这篇文章再做一下小结。 先亮结果&#xff0c;是采用原生还是混合的开发方式&#xff0c;需要先了解业务规划&#xff0c…

继承【C/C++】

目录 一、继承 1、概念 2、定义 3、继承方式和访问限定符 4、继承中的作用域 5、基类和派生类对象赋值转换 6、派生类的默认成员函数 构造 ​编辑 析构 友元 静态成员 二、多继承和菱形继承 菱形继承的问题 三、虚拟继承 原理 练习题&#xff1a; 四、组合…

1-07 React配置postcss-px-to-viewport

React配置postcss-px-to-viewport 移动端适配 安装依赖&#xff1a;在项目根目录下运行以下命令安装所需的依赖包&#xff1a; npm install postcss-px-to-viewport --save-dev配置代码 const path require(path);module.exports {webpack: {alias: {: path.resolve(__di…

【lesson14】进程控制之进程终止

文章目录 进程创建结尾写时拷贝 进程终止进程终止时操作系统做了什么&#xff1f;进程终止常见的方式用代码如何终止一个进程&#xff1f; 进程创建结尾 写时拷贝 上个博客在进程创建的时候我们提到了写时拷贝技术&#xff0c;那么到底什么是写时拷贝技术。 通常&#xff0c…

(汇总)系统设计 - 我们如何通俗的理解那些技术的运行原理 - 汇总篇

本心、输入输出、结果 文章目录 &#xff08;汇总&#xff09;系统设计 - 我们如何通俗的理解那些技术的运行原理 - 汇总篇前言分目录相关技术清单相关资料弘扬爱国精神 &#xff08;汇总&#xff09;系统设计 - 我们如何通俗的理解那些技术的运行原理 - 汇总篇 编辑&#xff1…

mount: /dev/sr0 is write-protected, mounting read-only

报错 原因 只有只读权限&#xff0c;没有写权限 解决 在终端中执行以下命令。 id user_name将 user_name 替换为您的用户名以获取您的 uid 然后执行此命令 sudo mount -o rw,uidyour_uid_here /dev/cdrom /mnt将 your_uid 替换为上面找到的用户的 uid。

Python 中的方法重载

本篇文章将通过示例介绍Python中的方法重载及其优点。 Python 中的方法重载 方法重载在 Python 中起着至关重要的作用。 方法有时采用零个参数&#xff0c;有时采用一个或多个参数。 当我们以不同的方式调用同一个方法时&#xff0c;称为方法重载。 Python 并不像其他语言一样…

数字电路与逻辑设计 之 组合逻辑电路

文章目录 组合电路的分析过程组合电路的设计过程电路竞争冒险编码器编码器的应用 组合电路的分析过程 在上面的例子中是 奇校验 功能&#xff0c;怎么改可以变成偶 校验呢 如果是增加一个异或门可以实现吗&#xff0c;答案是不可以&#xff0c;四个异或门也是实现奇校验功能&am…

十八、字符串(3)

本章概要 正则表达式 基础创建正则表达式量词CharSequencePattern 和 Matcherfinde()组&#xff08;Groups&#xff09;start() 和 end()Pattern 标记split()替换操作reset()正则表达式与 Java I/0 正则表达式 很久之前&#xff0c;_正则表达式_就已经整合到标准 Unix 工具…

Linux_虚拟内存机制

虚拟内存是如何工作的 我们的程序中使用的所有地址都是虚拟地址&#xff0c;但实际数据是从磁盘空间缓存在物理内存中&#xff0c;读的还是内存中的数据&#xff0c;所以每次CPU的访存操作都会先将虚拟内存交给CPU中的MMU硬件&#xff0c;利用存在主存&#xff08;实际也可能在…

Towards a Rigorous Evaluation of Time-series Anomaly Detection(论文翻译)

1 Introduction 随着工业4.0加速系统自动化&#xff0c;系统故障的后果可能会产生重大的社会影响&#xff08;Baheti和Gill 2011; Lee 2008; Lee&#xff0c;Bagheri和Kao 2015&#xff09;。为了防止这种故障&#xff0c;检测系统的异常状态比以往任何时候都更加重要&#xff…

python+unittest+requests+HTMLRunner编写接口自动化测试集

问题描述&#xff1a; 搭建接口测试框架&#xff0c;执行用例请求多个不同请求方式的接口 实现步骤&#xff1a; ① 创建配置文件config.ini&#xff0c;写入部分公用参数&#xff0c;如接口的基本url、测试报告文件路径、测试数据文件路径等配置项 1 [DATABASE] 2 data_addre…

QT:编译opencv4.5.3

软件版本 QT&#xff1a;5.9.11 OpenCV 4.5.3 mingw 530&#xff08;32位&#xff09; cmake 3.15.3 下载地址&#xff1a; opencv下载&#xff1a;https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/ cmake下载&#xff1a;https://cmake.org/files/ qt下…

多变量GARCH模型R代码实现

大家好&#xff0c;我是带我去滑雪&#xff01; 多变量GARCH&#xff08;Generalized Autoregressive Conditional Heteroskedasticity&#xff09;模型是一种用于建模多个时间序列变量之间的条件异方差性&#xff08;conditional heteroskedasticity&#xff09;的统计模型。它…

Unity开发之观察者模式(事件中心)

观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。在观察者模式中&#xff0c;主体是通知的发布者&#xff0c;它发出通知时并不需要知道谁是它的观察者&#…