机器人跳跃问题

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

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

编号为 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

分析:

读清题后 转化题意

设机器人在第i座建筑的能量值为Ei 每跳跃到下一个建筑有两种情况

如果 E(i+1)<H(i+1)  E(i+1) = Ei - (Hi - Ei) = 2*Ei-Hi

如果 E(i+1)>H(i+1)  E(i+1) = Ei + Ei - Hi =  2*Ei-Hi

可见 不管哪种情况 E(i+1)的值都为2*Ei-Hi 所以 只要保证所有的Ei>0 机器人便可以完成游戏

二分法:

#include <cstdio>
#include <cstring>
using namespace std;const int N = 1e5+10;
int n;
int h[N];bool check(int e){//从第一座建筑物向后爬for(int i=0;i<n;i++){e = 2*e-h[i];if (e>1e5) return true;else if(e<0) return false;}return true;
}
int main(){scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&h[i]);}int l=0,r=1e5;while(l<r){int mid = l+r>>1;  //选择区域是左半边/从左向右找第一个满足值 l+r>>1if(check(mid)) r = mid;else l = mid+1;}printf("%d",l);return 0;
}

今日头条2019年笔试题 机器人跳跃问题相关推荐

  1. 【今日头条2019,笔试题】机器人跳跃问题

    机器人跳跃问题 机器人正在玩一个古老的基于 DOS 的游戏. 游戏中有 N + 1 N+1 N+1 座建筑--从 0 0 0 到 N N N 编号,从左到右排列. 编号为 0 0 0 的建筑高度为 0 ...

  2. 今日头条2017校招笔试题

    一些出题人出了n道题,每道题有一个难度系数,难度系数满足以下关系的3道题可以组成一套试卷,为了使这n道题使用上且只能使用一次,问出题人最少还要出多少题? a<=b<=c b-a<=1 ...

  3. 2019面试/笔试题(算法题)总结

    实战链接:https://www.acwing.com/activity/content/8/ Google KickStart 2019 A轮 1. 训练 题目描述 作为一名学校足球教练,你的任务是 ...

  4. 今日头条:任务调度面试题解答

    今日头条:任务调度面试题解答 题目: 产品经理(PM)有很多好的idea,而这些idea需要程序员实现.现在有N个PM,在某个时间会想出一个 idea,每个 idea 有提出时间.所需时间和优先等级. ...

  5. 百度2019校招笔试题

    百度2019校招笔试题 1. 探险安排 小明要为n个人计划一次火星的探险,其中一个重要的任务是为每个参与者安排食物.仓库里面有m个能用一天的食物包裹,每个食物包裹有不同的类型ai.每个人每天必须用且只 ...

  6. 今日头条php面试经验,「今日头条」前端面试题和思路解析

    一篇文章和一道面试题 作者用一道2017年「今日头条」的前端面试题为引子,分步讲解了最终结果的执行原因.其中涉及到了不少概念,比如异步的执行顺序,宏任务,微任务等等,同时作者限定了执行范围,以浏览器的 ...

  7. 2017今日头条校招前端面试题(一面)

    今日头条向来是业界的薪资标杆,所以想去的也多,面试的难度自然就上来了.由于止步于一面,这里整理一下自己前端面试的问题. 总的来说,面试偏整体计算机知识的考察,其中重点是算法,而且一题多问,考察较为细致 ...

  8. 今日头条一面笔试面试题!!!!!完整

    参加字节跳动的面试,笔试一个小时,面试一个多小时,中午在公司食堂吃了顿饭,然后完毕,邮件通知我挂掉了. 先笔试,然后拿着卷子,面试官会根据笔试题从后往前问,整个过程感觉学习到超级多东西 先说笔试题-来 ...

  9. 半年工作经验今日头条和美团面试题面经分享

    昨天,下着小雨去面试了,特地避开雨天,竟然还是雨天,宝宝不想说话... 正好2点到,先去字节跳动,一进去就是客厅沙发桌子,旁边有书架和书,摆设一般,一点都感受不出大公司的气质,去了一直等了30分钟,催 ...

最新文章

  1. java设计模式 工厂模式
  2. 和lock一起学beego 博客系统开发为例(五)
  3. 第一次创业失败的总结 - 产品设计
  4. No MyBatis mapper was found in ‘[xx.mapper]‘ package. Please check your configuration
  5. boost::hana::zip_with用法的测试程序
  6. webpack基础第一篇(配置文件)
  7. Angular2 组件与模板 -- 输入和输出属性
  8. php flash chart,openflashchart 2.0 简单案例php版
  9. C/C++ http协议发送字段,文件,单个和多张图片
  10. P4196 [CQOI2006]凸多边形 /【模板】半平面交
  11. Essential Studio for Windows Forms发布2017 v2,持office 2016和主题定制
  12. java定时任务插件_jfinal定时调度任务插件QuartzPlugin
  13. Cisco Packet Tracer 6.2 安装教程 | 计算机网络
  14. 贝壳云php源码,贝壳云P1 刷机指南
  15. 基于vue+muse-ui的简历生成器
  16. 将python 脚本转换为exe格式
  17. 联想ThinkPad升级BIOS和EC新手教程
  18. php 499,服务频繁499(Nginx+PHP-fpm),应该从哪些角度入手追查这问题?
  19. 【Linux】Linux文件权限的理解
  20. DELL XPS 8930-R 从优盘安装centos7服务器

热门文章

  1. 微信小程序解密过程(java)
  2. 数据库系统-关系代数
  3. Ubuntu部署TeamTalk文档
  4. 单应性矩阵H和相机姿态参数R和T关系
  5. 45-js操作DOM和bom操作
  6. 如何知道计算机显示器尺寸,电脑显示器尺寸怎么看(电脑显示器常见参数详解)...
  7. 安装win7和Ubuntu双系统后,win7耳机没声音,外放有声音
  8. 二手车价格预测数据探索
  9. 《数据结构(C语言版)》严巍敏课件~第二章:线性表
  10. 《数据结构(C语言版)》严巍敏课件~第七章:图