Acwing---730.机器人问题

news2024/9/24 21:25:58

机器人问题

  • 1.题目
  • 2.基本思想
  • 3.代码实现

1.题目

机器人正在玩一个古老的基于 DOS 的游戏。

游戏中有 N+1 座建筑——从 0 到 N 编号,从左到右排列。

编号为 0 的建筑高度为 0 个单位,编号为 i 的建筑高度为 H(i) 个单位。

起初,机器人在编号为 0 的建筑处。

每一步,它跳到下一个(右边)建筑。

假设机器人在第 k 个建筑,且它现在的能量值是 E,下一步它将跳到第 k+1 个建筑。

如果 H(k+1)>E,那么机器人就失去 H(k+1)−E 的能量值,否则它将得到 E−H(k+1) 的能量值。

游戏目标是到达第 N 个建筑,在这个过程中能量值不能为负数个单位。

现在的问题是机器人至少以多少能量值开始游戏,才可以保证成功完成游戏?
在这里插入图片描述

2.基本思想

二分

H (k+1) >E 即 E -( H(k+1) − E
H (k+1)<=E 即 E +( E − H(k+1)

化简 两种情况即 2E - H(k+1)

对于
在这里插入图片描述

3.代码实现

import java.io.*;

public class _730机器人问题 {
    static int N = 100010;
    static int n;
    static int h[] = new int[N];

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        n=Integer.parseInt(br.readLine());
        String s[] =br.readLine().split(" ");
        for (int i = 1; i <= n; i++)
            h[i] =Integer.parseInt(s[i-1]);

        //二分
        int l = 0, r = N;
        while (l < r) {
            int mid = l + r >> 1;
            if (check(mid)) r = mid;
            else l = mid + 1;
        }
        System.out.println(l);
    }

    //校验 传入能量为mid是否符合
    private static boolean check(int e) {
        //遍历每个建筑 是否符合 任意时刻 e>0 、 2*e-h > 0
        for (int i = 1; i <= n; i++) {
            e = 2 * e - h[i];
            if (e >= N) return true;
            if (e < 0) return false;
        }
        return true;
    }
}

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

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

相关文章

Mycat2(四)mycat2 分库分表

文章目录一、分库分表原理垂直切分&#xff1a;分库水平切分&#xff1a;分表二、分库分表环境准备示例&#xff1a;开始准备环境三、实现分库分表3.1 分库分表--广播表&#xff08;BROADCAST&#xff09;3.2 分库分表--分片表&#xff08;dbpartition、tbpartition&#xff09…

电脑录屏怎么录ppt?三个ppt录制视频的方法

PPT演示文稿是人们在日常生活和学习中常用的工具&#xff0c;它也被广泛地运用于各个方面。最近有不少朋友问小编ppt录制视频的方法&#xff0c;其实ppt录制视频的方法有很多。如果只需要录制PPT内容&#xff0c;可以用PPT自带的“屏幕录制”来录制视频就可以了&#xff0c;如果…

Day848.Copy-on-Write模式 -Java 性能调优实战

Copy-on-Write模式 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于Copy-on-Write模式的内容。 Java 里 String 这个类在实现 replace() 方法的时候&#xff0c;并没有更改原字符串里面 value[]数组的内容&#xff0c;而是创建了一个新字符串&#xff0c;这种方法在…

C++GUI之wxWidgets(10)-编写应用涉及的类和方法(5)-事件处理(4)

目录自定义事件AddPendingEvent()QueueEvent()PushEventHandler()ProcessEvent()wxCommandEvent与新的事件类型一起使用自定义事件 AddPendingEvent() virtual void wxEvtHandler::AddPendingEvent ( const wxEvent & event ) 发布要稍后处理的事件。 此函数类似于Qu…

逆向-还原代码之eth (Interl 64)

// 源程序 #include <stdio.h> #define HIETH_SYSREG_BASE (0x101e0000) #define REG_RESET 0x01C // 外设控制寄存器(IP软复位控制) #define RESET_SHIFT 12 static void hieth_set_regbit(unsigned long addr, int bit, int shift) { unsigned long …

nginx学习笔记1(小d课堂)

我们进入到官网可以看到有很多个版本的nginx。 我们点击documentation&#xff0c;可以看到官方文档&#xff0c;但是这里的文档暂时还没有中文的&#xff1a; 我们这里后期会在linux上进行安装部署nginx。 而我们的nginx就是我们的反向代理服务器。 我们可以这样来配置。 我们…

栈和队列(内附模拟实现代码)

一&#xff0c;栈1.1 栈的概念栈是一种线性表&#xff08;是一种特殊的线性表&#xff09;&#xff0c;栈只允许在固定一端进行插入和删除元素。插入元素的一端称为栈顶&#xff0c;另一端称为栈底。所以栈中的数据元素满足先进后出&#xff08;First In Last Out&#xff09;的…

【数据篇】31 # 如何对海量数据进行优化性能?

说明 【跟月影学可视化】学习笔记。 渲染动态的地理位置 用随机的小圆点模拟地图的小圆点&#xff0c;实现呼吸灯效果 最简单的做法&#xff1a;先创建圆的几何顶点数据&#xff0c;然后对每个圆设置不同的参数来分别一个一个圆绘制上去。 <!DOCTYPE html> <html …

如何使用python删除一个文件?别说,还挺好用....

嗨害大家好鸭&#xff01;我是小熊猫~ 若想利用python删除windows里的文件&#xff0c;这里需要使用os模块&#xff01;那接下来就看看利用os模块是如何删除文件的&#xff01; 具体实现方法如下&#xff01; 更多学习资料:点击此处跳转文末名片获取 os.remove(path) 删除文…

Java位运算符:Java移位运算符、复合位赋值运算符及位逻辑运算符

Java 定义的位运算&#xff08;bitwise operators&#xff09;直接对整数类型的位进行操作&#xff0c;这些整数类型包括 long&#xff0c;int&#xff0c;short&#xff0c;char 和 byte。位运算符主要用来对操作数二进制的位进行运算。按位运算表示按每个二进制位&#xff08…

GitLab安装使用(SSH+Docker两种方式)

GitLab安装使用1、在ssh下安装gitlab1.1 安装依赖1.2 配置镜像1.3 开始安装1.4 gitlab常用命令2、在docker下安装gitlab2.1 安装docker2.1.1 更新yum源2.1.2 安装依赖2.1.3 添加镜像2.1.4 查看源中可用版本2.1.5 安装指定版本2.1.6 配置开机启动项2.2 使用容器安装gitlab2.2.1 …

车载以太网 - DoIP头部信息检测逻辑 - 03

通过前面的文章我们已经了解了DoIP所具备的Payload类型,基础的信息都已经具备了,今天我们就要进一步的去了解DoIP的处理逻辑了;按照正常的逻辑来看,处理无论是我们人眼去看书,还是计算机处理一段数据,都是从前到后依次进行处理;而DoIP的信息处理也不例外,也是从头开始进…

2023跨境出海指南:印度网红营销白皮书

前不久&#xff0c;联合国预测印度人口将在4个月后超过中国&#xff0c;成为全球第一人口大国。印度这个国家虽然有些奇葩&#xff0c;但他们的经济实力确实不能小觑&#xff0c;这也是众多国际公司大力发展印度的原因。出海印度容易&#xff0c;但攻克印度市场太难&#xff0c…

Python Tutorial——类

与其它编程语言相比&#xff0c;Python的类机制添加了最小的新语法和语义。它是C和Modula-3中的类机制的混合。Python的类提供了面向对象编程的所有的标准特性&#xff0c;类继承机制允许有多个基类&#xff0c;一个子类可以重写基类中的任何方法&#xff0c;一个方法可以调用基…

编程思想图书推荐,新手入门应该看些啥

编程思想图书推荐&#xff0c;新手入门应该看些啥 导入 元旦的时候&#xff0c;学校社团的指导老师&#xff0c;咨询我有没有什么可以推荐的编程思想的学习书籍&#xff0c;可以值得推荐精读。 说实话&#xff0c;我个人是买过很多书的&#xff0c;但是很少读书&#xff0c;如果…

搭建redis主从复制+哨兵高可用

从服务器连接主服务器&#xff0c;发送SYNC命令&#xff1b;主服务器接收到SYNC命名后&#xff0c;开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令&#xff1b;主服务器BGSAVE执行完后&#xff0c;向所有从服务器发送快照文件&#xff0c;并在发送期间继续…

Window下安装oracle12C

1.Window下安装oracle12C 官网下载地址&#xff1a; Database Software Downloads | Oracle 页面顶部选择 “接受许可协议” 后&#xff0c;我想选择下载 12c 版的企业版&#xff0c;文件1和文件2都需要下载。&#xff08;如果提示登录 Oracle&#xff0c;则需要先登录才能下…

java家装网装修网站装修系统源码

简介 本平台主要是家装网站。管理员发布装修案例&#xff0c;看工地&#xff0c;装修设计师&#xff0c;装修攻略&#xff0c;装修知识文章等&#xff0c;嵌入3d全景图。普通用户注册&#xff0c;填写装修房型报价等。 演示视频&#xff1a; https://www.bilibili.com/video/…

Kotlin基础入门 - 静态变量、常量 And 静态函数、方法

2022一晃而过&#xff0c;2023悄然而至&#xff0c;有天晚上看第一行代码&#xff08;第三版&#xff09;的时候&#xff0c;又看到了Kotlin中静态方法的几种使用方式&#xff0c;蹭着过年还有一些时间&#xff0c;写了个Demo简单测试记录一下 在 Kotlin 中使用静态的方式不止一…

JavaScript基础系列之原型链

1. 前言 今天的重点复习的是JavaScript原型链。所谓是"基础不牢&#xff0c;地动山摇"&#xff0c;原型链作为继承等相关知识的基础&#xff0c;就显得尤为重要了。接下来以手绘原型链为基础&#xff0c;详解讲解下原型链以及相关的属性 2. 原型 以及原型链 2.1 pro…