原题链接: 730. 机器人跳跃问题 - AcWing题库

思路:

本题的难点就在于对题意的分析:假设机器人在第 k 个建筑,且它现在的能量值是 E,下一步它将跳到第 k+1 个建筑。如果H(k+1)>E,那么机器人就失去H(k+1)-E的能量值,否则它将得到E-H(k+1)的能量值

刚看到这些信息可能无从下手,乍一看好像还像个模拟,但如果稍微对题目信息做一下变形,会惊奇的发现一件事:如果H(k+1)>E,E=E-(H(k+1)-E)=2E-H(k+1),如果H(k+1)<E,E=E+(E-H(k+1))=2E-H(k+1)

这两个完全一样,所以看似分情况讨论,实则就一种操作,无需分情况,从起点到终点机械的执行这个操作即可

经过上述分析,题目就被抽象成:找到一个最小的E,从起点到终点重复执行*2-H(k+1)这个操作,直到终点,期间不能为负数

很显然这是一个二分了,那么分析一下时间复杂度,二分时间复杂度O(logn),check函数每次执行需要遍历整个h数组,所以整体时间复杂度为O(nlogn),本题数据范围1e5,log100000≈16,1e6<1e8,所以时间复杂度ok

所以做法如下:

  • 套用二分模板
  • 确定check函数
  • 处理一些check函数的细节

代码如下:

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1e5+10;
int h[N];
int temp=0;
int n;
bool check(int x)
{for(int i=0;i<n;i++){int now=2*x-h[i];if(now>=temp) return true;//比最大值还大就没必要继续遍历了if(now<0) return false;x=now;}return true;
}
int main()
{cin>>n;for(int i=0;i<n;i++) cin>>h[i];for(int i=0;i<n;i++) temp=max(temp,h[i]);int l=0,r=1e5+10;while(l<r){int mid=l+r>>1;if(check(mid)) r=mid;elsel=mid+1;}cout<<l;return 0;
}

作者:机械之忍
链接:https://www.acwing.com/activity/content/code/content/1949877/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本人刚开始写题解不久,很多地方还不成熟,如果各位有疑问之处,或者我写的哪里有错误,欢迎私信我或者在下方留言

我的QQ:2907065305

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

  1. 字节跳动今日头条笔试题目经历2018

    本人是 字节跳动2018年12月来学校宣讲会招实习生的时候参加笔试的.方向是后端开发.那时候还在学框架啊之类的还没开始刷算法,笔试的三道题目只做出了第一道的代码,其他两道都是只写出了分析过程.刚刚出结 ...

  2. python 头条新闻机器人_新闻写作机器人的应用及前景展望——以今日头条新闻机器人张小明(xiaomingbot)为例...

    摘要:在里约奥运会上,今日头条的一个名叫"张小明"的新闻机器人让读者眼前一亮.2秒钟写稿,拟人化语言,智能配图......近些年来,人工智能在新闻领域的应用越来越频繁,不少人惊呼连 ...

  3. 今日头条笔试之字母交换

    一.题目描述 [编码题]字符串S由小写字母构成,长度为n.定义一种操作,每次都可以挑选字符串中任意的两个相邻字母进行交换.询问在至多交换m次之后,字符串中最多有多少个连续的位置上的字母相同? 输入描述 ...

  4. 今日头条笔试第二题--文章病句标识

    为了提高文章质量,每一篇文章(假设全部都是英文)都会有m名编辑进行审核,每个编辑独立工作,会把觉得有问题的句子通过下标记录下来, 比例[1, 10],1表示病句的第一个字符,10表示病句的最后一个字符 ...

  5. 今日头条2018校园春季招聘研发岗位笔试(第一场)经验

    笔试公司:今日头条 笔试岗位:后端开发 笔试时间:2018年3月24日19:00-21:00 笔试形式:牛客网在线做题 笔试回忆: 笔试总共五道题.是的,只有五道编码题,没有选择or填空. 第一题,输 ...

  6. 今日头条2018.8.12笔试题总结

    今日头条笔试题1(经典的floodfill问题): 具体可以参考leetcode 200题:Number of Islands 1. 一个球场C的球迷看台可容纳M*N个球迷.官方想统计一共有多少球迷群 ...

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

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

  8. 今日头条2019年笔试题 机器人跳跃问题

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

  9. 今日头条2018春季校园招聘研发岗位笔试编程题 - 题解

    由于24号头条笔试我还在回学校的路上,因此没有在笔试中做题,这些题目都是后来同学给我的,我做了下,不保证100%通过,因为我自己没在笔试中提交过.如果题目抄写有误或者说我的解法有误,或者你有更好的解法 ...

  10. AI一分钟|AI聊机器人“Shibuyu Mirai”获日本居住权,传今日头条3亿美元收购Faceu激萌

    一分钟AI 继Sophia获得公民权后,AI聊机器人"Shibuyu Mirai"获日本居住权 今日头条收购相机拍照工具Faceu激萌,据传交易总价约为3亿美元 "谷歌自 ...

最新文章

  1. 如何在jasperreport自动生成序号
  2. python学习内容大全_python学习内容大全
  3. [css] 你有使用:valid和:invalid来校验表单吗?
  4. LeetCode 1260. 二维网格迁移(二维转一维)
  5. 你的IE一路顺风吗?
  6. 智能医疗二次爆发,医疗的全产业链何时打通?
  7. Google 应用与游戏出海 7 月刊: 创意工具,让应用大放异彩
  8. 学生成绩分析系统后端函数解释(Python)
  9. QQ登录界面实现(JAVA)
  10. 用python爬取校花网图片
  11. 中国制造构建全球产业链,是关于价值链的创新
  12. QQ群头像 微信群头像 多图合并框架实现
  13. 人工智能之语音机器人
  14. Win7开启wifi热点
  15. 基于51单片机的指纹解锁自动开门
  16. Translation网络异常问题解决
  17. 区块链开发者招聘:IOST开发者计划
  18. 【深度学习】村通网之——谈谈Tensorflow Eager Execution机制之静态图和动态图的区别(一)
  19. 单相交流线路与三相交流线路的区别
  20. 计算机网络管理员工作周记,计算机java开发实习周记20篇

热门文章

  1. java做一个客房管理系统定制_基于jsp的客房管理系统-JavaEE实现客房管理系统 - java项目源码...
  2. 硬见小百科:机加工中获得工件尺寸精度的常用方法
  3. 卸载python2.7_Office卸载工具官方版
  4. 初学者如何利用米思齐编写出一套完整的程序
  5. 最详细的vue安装教程
  6. java pdf打印_Java 打印PDF文档的3种方法
  7. 利用Bitvise SSH Client设置二级代理
  8. SpringBoot+Vue项目外卖点餐系统
  9. okhttp返回内容乱码_tomcat服务器接口返回的数据乱码
  10. Python与R语言优缺点比较——“术业有专攻”