首页 > 其他分享 >机器人跳跃问题

机器人跳跃问题

时间:2024-05-06 10:58:45浏览次数:24  
标签:int 机器人 样例 mid long 问题 1e5 跳跃

机器人正在玩一个古老的基于 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)≤105,

输入样例1:

5
3 4 3 2 4

输出样例1:

4

输入样例2:

3
4 4 4
输出样例2:

4
输入样例3:

3
1 6 4

输出样例3:

3

题解:

一道简单的二分, 但需要注意这题不加特判的话会爆 long long

  • 数据范围是 [1, 1e5], 所以二分左右边界就是1和1e5
  • 每次用 mid 当作初始的 e 的能量, 判断是否满足题意
  • 由于h[i], 不超过1e5, 所以当 e > 1e5 的时候后面的就不需要继续计算了 (剪枝, 特判, 可以防止爆long long 和 int)
#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 10;
int a[N];
int n;
bool check(int e)
{
    for (int i = 1; i <= n; i ++)
    {
        e = 2 * e - a[i];
        if (e > 1e5) return true;   // 不写这个判断的话long long也会爆掉的
        if (e < 0) return false;
    }
    return true;
}

int main()
{
    cin >> n;
    for (int i = 1; i <= n; i ++) cin >> a[i];
    int l = 1, r = 1e5;
    while (l < r)
    {
        int mid = l + r >> 1;
        if (check(mid)) r = mid;
        else l = mid + 1;
    }
    cout << l << endl;
    return 0;
}

觉得写的不错的话, 点个赞吧~

标签:int,机器人,样例,mid,long,问题,1e5,跳跃
From: https://www.cnblogs.com/xxctx/p/18174518

相关文章

  • 关于vxe-table复选框翻页选中问题及解决
    vxe-table复选框翻页选中问题根据vxe-table官方文档,想要保留勾选中的数据,我们的代码中需要设置“row-id”和:checkbox-config中的“reserve”属性。简单写下html部分:12345678<vxe-grid    row-id="id"    :checkbox-config="{labelField:'',hi......
  • MySQL Connection not available问题解决方案
    在后端开发过程中,连接mysql数据库,过几个小时第一次使用会出现MySQLConnectionnotavailable报错这是因为MySql数据库存在一个连接池的回收时间,超过这个时间会导致资源无法正常释放,无法连接到MySql数据库1)在相关引用页面,进行定时刷新功能,这样尽管是同一个连接,但是相当于一个新......
  • MySQL DBA 面试问题
    1、MySQL适用的场景是什么?数据量建议单实例T级或以内,不依赖存储过程、函数、触发器的传统oltp场景都适用,因为是一个相对轻量级的数据库灾备使用MySQL各类的高可用方案即可,比如主从、mha、mgr等。2、MySQL巡检应该怎么做?优先关注哪些参数?可以从以下几个方面去做:服务器配置操......
  • NVIDIA机器人仿真环境 —— NVIDIA Isaac Sim 的headless模式/无头模式 —— 非桌面模
    相关:https://developer.nvidia.com/isaac-sim可视化模式,也就是在桌面系统上直接安装软件,具体地址:https://developer.nvidia.com/isaac-sim无头模式则是使用docker安装,该种情况下不使用可视化界面,所有操作均在docker容器内,地址:https://catalog.ngc.nvidia.com/orgs/nvid......
  • 测试 springboot 项目苍穹外卖,解决 Unable to connect to Redis 错误问题
       使用IDEA启动springboot项目苍穹外卖后台项目sky-take-out,测试“菜品批量删除”接口时,能够正常完成操作,但是服务器始终显示下面错误信息:2024-05-0320:54:24.134ERROR24360---[nio-8181-exec-3]o.a.c.c.C.[.[.[/].[dispatcherServlet]  :Servlet.service()fo......
  • 如何选择一个机器人仿真器
    参考1:选一个靠谱机器人仿真器,从0开始学机器人传统仿真器如gazebo,webot,coppeliasim的表现都大差不差;webot和coppeliasim入门难度比gazebo低;webot和coppeliasim对于ROS的适配没有gazebo好,环境的丰富性也比不上gazebo;gazebo承接了DARPA地下探索挑战赛的仿真比赛,里面所有......
  • Sxstrace.exe 是 Windows 操作系统提供的一个工具,用于跟踪和分析应用程序的依赖项解析
    sxstrace|MicrosoftLearnSxstrace.exe是Windows操作系统提供的一个工具,用于跟踪和分析应用程序的依赖项解析过程。该工具可以帮助用户诊断应用程序启动或运行时出现的依赖项错误或加载问题。在Windows中,许多应用程序依赖于共享组件和库文件,如动态链接库(DLL)。当应用......
  • 机器人移动的规划和导航
    现在,假如有一个机器人,它已经存储好一个全局的地图(哪里可通行,哪里不可通行),并且知道自己在其中的位置。现在要从给定的起点走到终点,我们应该怎么做?有轨导航和无轨导航在某些应用场景中,例如工厂或仓库,环境相对固定且对路径的准确性要求较高。这种情况下,我们可以使用有轨导航系统,比......
  • NVIDIA的人形机器人的基础模型Project GR00T已在实体机器人上进行展示
    原文地址:https://blogs.nvidia.com/blog/isaac-generative-ai-manufacturing-logistics/项目GR00T为人型机器人开发谢幕在GTC上展示,由GR00T驱动的人型机器人可以接受多模态指令——文本、视频和演示——以及它们之前的交互,以产生机器人所需的动作。GR00T在来自不同公司的四个......
  • 群晖的文件和目录挂载软链接问题,如何一个目录多头管理
    注意:   群晖不支持ln-s软连接方式,ssh命令能成功,但是filestation不显示,群晖官方说不支持这种方式挂载。解决:   利用mount来将某个目录挂载到另外一个目录去,例如drive里面有一个web文件夹,你想要drive访问和网站管理兼顾,那么web文件夹本体放到drive里,用mount--bind......