Acwing:730. 机器人跳跃问题(二分法)

问题描述:

题目链接:730. 机器人跳跃问题
机器人正在玩一个古老的基于 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个建筑,在这个过程中能量值不能为负数个单位。现在的问题是机器人至少以多少能量值开始游戏,才可以保证成功完成游戏?

输入格式
第一行输入整数 N。
第二行是 N个空格分隔的整数,H(1),H(2),…,H(N)代表建筑物的高度。

输出格式
输出一个整数,表示所需的最少单位的初始能量值上取整后的结果。

数据范围
1≤N,H(i)≤10 ** 5,

输入样例1:

5
3 4 3 2 4

输出样例1:

4

输入样例2:

3
4 4 4

输出样例2:

4

输入样例3:

3
1 6 4

输出样例3:

3

思路:

首先通过题目分析可以得出:

如果失去能量,失去后的总能量为:E` = E - (H(k+1)−E) = 2E - H(k+1)

如果获得能量,则获得后的总能量: E` = E + (E−H(k+1)) = 2E - H(k+1)

所以能量的变化为 E` = 2E - H(k+1)

E越大 能量变化越大 可得出具有单调性 可以用二分求解

二分法:

二分法求解的是E的取值,E的取值范围在0到10**5之间,存在最小的E使E的左边不满足条件(也就是在跳跃时E会小于0),E的右边都是满足条件的E。

判断E是否符合可以用E的变化公式E` = 2E - H(k+1)来判断

代码及详细注释:

n = int(input())  # 输入一个整数n
nums = list(map(int, input().split()))  # 输入n个整数,存储在列表nums中# 定义一个函数check,用于检查给定的值e是否满足条件
def check(e):for i in range(n):e = 2 * e - nums[i]  # 更新e的值if e < 0:  # 如果e小于0,则返回Falsereturn Falsereturn True  # 如果所有元素都满足条件,则返回Truel = 0  # 初始化左边界为0
r = 10 ** 5  # 初始化右边界为10^5
while l < r:mid = (l + r) // 2  # 计算中间值midif check(mid):  # 调用check函数检查mid是否满足条件r = mid  # 如果满足条件,则将右边界更新为midelse:l = mid + 1  # 如果不满足条件,则将左边界更新为mid+1
print(l)  # 输出最终结果l

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

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

相关文章

【S5PV210】 | GPIO编程

【S5PV210】 | GPIO编程 时间:2024年3月17日22:02:32 目录 [TOC] 1.参考 1.s5pv210开发与学习:1.5之裸机汇编流水点灯_s5pv210汇编指令集-CSDN博客 2.s5pv210开发与学习:1.8之裸机蜂鸣器实验_pv210 蜂鸣器-CSDN博客 3.s5pv210开发与学习:1.9之裸机按键控制LED_s5pv210 按键…

机器学习——压缩网络作业

文章目录 任务描述介绍知识蒸馏网络设计 Baseline实践 任务描述 网络压缩&#xff1a;使用小模型模拟大模型的预测/准确性。在这个任务中&#xff0c;需要训练一个非常小的模型来完成HW3&#xff0c;即在food-11数据集上进行分类。 介绍 有许多种网络/模型压缩的类型&#xff0…

法律数字化与AI大模型的结合正在带来行业新变革

法律数字化与AI大模型的结合&#xff0c;正在逐步改变法律行业的传统运作方式&#xff0c;为法律从业者提供更加高效、精准的服务&#xff0c;同时也为公众提供了更加便捷的法律咨询和解决方案。 蚓链AI大模型在法律数字化过程中起到了关键作用。AI模型通过自然语言处理、机器…

【自学用】B站python爬虫课程笔记(Q11-15)

下面是学习的网址&#xff1a; ​​​​​​【Python爬虫】 11、class定义类别的一些问题 我写的"可爱小猫类别"的代码如下&#xff1a; class CuteCat:def __init__(self, cat_name, cat_age, cat_color, cat_temper):# cat_name name# self_name cat_name #…

Spring--注解

一、简介 Spring注解是一种元数据形式的代码&#xff0c;用于提供配置信息&#xff0c;从而减少XML配置文件的使用。Spring框架提供了一系列的注解&#xff0c;用于简化Spring应用程序的开发。通过使用这些注解&#xff0c;开发者可以在不编写大量XML配置的情况下&#xff0c;…

代码随想录day23(2)二叉树:从中序与后序遍历序列构造二叉树(leetcode106)

题目要求&#xff1a;根据一棵树的中序遍历与后序遍历构造二叉树。 思路&#xff1a;408的经典题目&#xff0c;思路和手撕的思路差不多&#xff0c;先从后序中找到根节点&#xff0c;再从中序中找到此节点&#xff0c;然后分割成左右子树&#xff0c;记录一下左右子树的节点个…

PyQt5使用

安装Pyqt5信号与槽使用可视化界面编辑UI (Pyside2)ui生成之后的使用(两种方法)1 ui转化为py文件 进行import2 动态调用UI文件 安装Pyqt5 pip install pyqt5-tools这时候我们使用纯代码实现一个简单的界面 from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButto…

2024 年(第 12 届)“泰迪杯”数据挖掘挑战赛——B 题:基于多模态特征融合的图像文本检索完整思路与源代码分享

一、问题背景 随着近年来智能终端设备和多媒体社交网络平台的飞速发展&#xff0c;多媒体数据呈现海量增长 的趋势&#xff0c;使当今主流的社交网络平台充斥着海量的文本、图像等多模态媒体数据&#xff0c;也使得人 们对不同模态数据之间互相检索的需求不断增加。有效的信…

Rocket MQ 从入门到实践

为什么要使用消息队列&#xff0c;解决什么问题&#xff1f;&#xff08;消峰、解藕、异步&#xff09; 消峰填谷 客户端》 网关 〉 消息队列》秒杀服务 异步解耦 消息队列中的重要概念理解。&#xff08;主题、消费组、队列&#xff0c;游标&#xff1f;&#xff09; 主题&…

新手向-从VNCTF2024的一道题学习QEMU Escape

[F] 说在前面 本文的草稿是边打边学边写出来的&#xff0c;文章思路会与一个“刚打完用户态 pwn 题就去打 QEMU Escape ”的人的思路相似&#xff0c;在分析结束以后我又在部分比较模糊的地方加入了一些补充&#xff0c;因此阅读起来可能会相对轻松&#xff08;当然也不排除这是…

Transformer总结

1.Transform背景介绍 1.1Transform的优势 相比于之前占领市场的LSTM和GRU模型&#xff0c;Transformer有两个显著的优势&#xff1a; &#xff08;1&#xff09;Transform能够使用分布式GPU进行并行训练&#xff0c;提升模型训练效率 &#xff08;2&#xff09; 在分析预测…

zookeeper基础学习之六: zookeeper java客户端curator

简介 Curator是Netflix公司开源的一套zookeeper客户端框架&#xff0c;解决了很多Zookeeper客户端非常底层的细节开发工作&#xff0c;包括连接重连、反复注册Watcher和NodeExistsException异常等等。Patrixck Hunt&#xff08;Zookeeper&#xff09;以一句“Guava is to Java…

【算法刷题 | 数组】3.12(二分查找、移除元素、有序数组的平方、长度最小的子数组、螺旋矩阵2)

文章目录 1.二分查找1.1题目1.2思路&#xff08;核心&#xff1a;区间的定义&#xff09;1.3左闭右闭1.4左闭右开1.5总结 2.移除元素2.1题目2.1思路2.2.1暴力解法2.2.2双指针法 23总结 3.有序数组的平方3.1题目3.2思路3.2.1暴力解法3.2.2双指针法 4.长度最小的子数组4.1题目4.2…

Linux中文件和目录管理(创建删除移动复制)

目录 1——一次建立一个或多个目录&#xff1a;mkdir ​2——创建一个空文件&#xff1a;touch 3——移动和重命名&#xff1a;mv 4——复制文件和目录&#xff1a;cp 5—— 删除目录和文件&#xff1a;rmdir和rm 在学习文件与目录的管理的一些命令之前&#xff0c;我们先…

深度学习-面经(part2、CNN)

2 CNN 对图像&#xff08;不同的数据窗口数据&#xff09;和滤波矩阵做内积&#xff08;逐个元素相乘再求和&#xff09;的操作就是所谓的『卷积』操作。 卷积神经网络由输入层、卷积层、激励层、池化层、全连接层组成。 ① 最左边: 数据输入层&#xff0c;对数据做一些处理…

安装vscode及插件

一.环境准备 安装vscode&#xff0c;官网地址&#xff1a;https://code.visualstudio.com安装插件&#xff1a; Chinese (Simplified)&#xff0c;为 VS Code 提供本地化界面&#xff0c;按下“CtrlShiftP”组合键以显示“命令面板”&#xff0c;然后键入“display”以筛选并显…

【划重点】小程序开发难哭了?别怕,大数据揭秘教科书般的小白必看攻略!

当我们在微信的海洋中航行&#xff0c;偶尔会看到一些令人眼前一亮的小程序。它们或简洁实用&#xff0c;或游戏娱乐&#xff0c;或商业推广&#xff0c;各具魅力。但你是否曾好奇过&#xff0c;这些看似简单的小程序背后&#xff0c;隐藏着怎样的开发秘密&#xff1f;今天&…

数字后端 EDA 软件分享

数字后端 EDA 软件分享 推荐这几家的EDA工具吧&#xff0c;虽说我也支持国产工具&#xff0c;但是我还是选择了这几家的工具 apache cadence mentor synopsys 下图我现在用的eda环境&#xff0c;利用网上的资源&#xff0c;自己独立在vmware上搭建好的EDA环境 除去pdk&#…

tmux终端复用器

tmux使用手册 会话与进程需求痛点tmux作用使用场景安装tmux常用命令在tmux中编译代码多个显示器分辨率的tmux attach出现窗口不匹配的问题 会话与进程 命令行的经典使用方式&#xff1a; 用户打开一个终端窗口&#xff08;terminal window&#xff09;&#xff1b;用户在终端…

从政府工作报告探究计算机行业发展

从政府工作报告探计算机行业发展 政府工作报告作为政府工作的全面总结和未来规划&#xff0c;不仅反映了国家整体的发展态势&#xff0c;也为各行各业提供了发展的指引和参考。随着信息技术的快速发展&#xff0c;计算机行业已经成为推动经济社会发展的重要引擎之一。因此&…