AcWing 730. 机器人跳跃问题(二分)

这篇具有很好参考价值的文章主要介绍了AcWing 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)≤1e5,

输入样例1:

5
3 4 3 2 4

输出样例1:

4

输入样例2:

3
4 4 4

输出样例2:

4

输入样例3:

3
1 6 4

输出样例3:

3

 解析:

        我们观察,需要的能量值为从0到1e5的单增区间,并且答案最小值左侧不符合题意,右侧符合题意,这样我们可以用二分枚举答案,找到右侧符合题意区间的最左端点即为答案。

        并且1e5二分次数在20次以内,这样时间复杂度在1e6~1e7之间,不会超时。

        同时,应注意,如果很长一段区间机器人都在往下走,这样能量一直增加可能暴int,所以当能量超过1e5时一定成立,所以要特判是否超过1e5.

二分代码:文章来源地址https://www.toymoban.com/news/detail-480740.html

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,a[N];
int check(int x){
	for(int i=1;i<=n;i++){
		x=2*x-a[i];
		if(x<0) return 0;
		if(x>1e5) return true;	//防止x暴int 
	}
	return 1;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&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;
	return 0;
} 

到了这里,关于AcWing 730. 机器人跳跃问题(二分)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 扫地机器人(二分算法+贪心算法)

    1.  if(robot[i]-len=sweep)这个代码的意思是——如果机器人向左移动len个长度后,比现在sweep的位置(现在已经覆盖的范围)还要靠左,就是覆盖连续不起来,呢么这个len就是有问题的,退出函数,再继续循环。 2.  显然当每个机器人清扫的范围相同时,所用时间最小,所以这时

    2024年01月20日
    浏览(46)
  • 【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人

    《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌ 更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍 感谢小伙伴 们点赞、关注! class   Solution :      def   findContentChildren ( self ,  g :  List [ int ],  s

    2024年02月04日
    浏览(55)
  • 【LeetCode 算法】Walking Robot Simulation 模拟行走机器人 - 二分

    机器人在一个无限大小的 XY 网格平面上行走,从点 (0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令 commands : -2 :向左转 90 度 -1 :向右转 90 度 1 = x = 9 1 = x = 9 1 = x = 9 :向前移动 x 个单位长度 在网格上有一些格子被视为障碍物 obstacles 。第 i 个障碍物位

    2024年02月11日
    浏览(49)
  • 宽度有限搜索BFS搜索数及B3625 迷宫寻路 P1451 求细胞数量 B3626 跳跃机器人

    题目描述 机器猫被困在一个矩形迷宫里。 迷宫可以视为一个 n×m 矩阵,每个位置要么是空地,要么是墙。机器猫只能从一个空地走到其上、下、左、右的空地。 机器猫初始时位于 (1,1) 的位置,问能否走到 (n,m) 位置。 输入格式 第一行,两个正整数 n,m。 接下来 n 行,输

    2024年02月13日
    浏览(42)
  • 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)-- 第五题 树与二分图 (已完结)

    其它题目 RC-u5 树与二分图 设 G=(V,E) 是一个无向图,如果顶点集合 V 可分割为两个互不相交的子集 (A,B),并且每条边 (i,j)∈E 的两个端点 i 和 j 分别属于这两个不同的顶点子集,则称图 G 为一个二分图。 现在给定一棵树 T,要求选择树中两个没有边相连的结点 i 和 j,使得将无

    2024年02月16日
    浏览(39)
  • 基于STM32F103控制舵机 仿真 简单二轴机器人逆运动学(20220615完成 正在处理三轴)

    本项目基于 正点原子精英(stm32f103zet6) 控制小舵机 模拟 二轴机器人逆运动学控制。 目录 概述: 1. 我的问题总结 2.stm32控制部分 与机械部分 2.1 对于二轴机器人设计 2.2 stm32 输出 pwm 2.3 舵机控制 3.正运动学 3.1 D-H建模下对姿态的描述 4.逆运动学 4.1 几何解法 4.2 代数解法 4.3 多重

    2023年04月20日
    浏览(64)
  • 你知道机器人奇点吗?机器人奇点问题应该如何解决?

    原创/文 BFT机器人   “机器人奇点”——一个让机器人厂商和用户听到都闻风丧胆的词,一旦碰上,轻则重新编程调试,重则要和你的机器人say goodbye了。 提及“奇点“二字,你可能会立刻联想到黑洞。因为在物理学、宇宙学中,“奇点”也被称为时空奇点或引力奇点,它是

    2024年02月13日
    浏览(46)
  • 机器人专题:我国机器人产业园区发展现状、问题、经验及建议

    今天分享的是 机器人系列 深度研究报告:《 机器人专题:我国机器人产业园区发展现状、问题、经验及建议 》。 (报告出品方:赛迪研究院) 报告共计: 26 页 机器人作为推动工业化发展和数字中国建设的重要工具,既是现代化产业体系 的重要组成,又是加速各产业现代

    2024年02月22日
    浏览(47)
  • 动态规划—机器人移动问题(Java)

    😀前言 机器人移动问题是一个经典的动态规划应用场景,它涉及到在给定范围内的位置上进行移动,并计算到达目标位置的方法数。本文将介绍三种解决这一问题的方法:暴力递归、缓存法和动态规划。通过比较不同方法的优缺点,我们将深入理解动态规划在解决问题中的

    2024年04月28日
    浏览(43)
  • 【数学建模】机器人避障问题

    已知: 正方形5的左下顶点坐标 ( 80 , 60 ) (80,60) ( 80 , 60 ) ,边长 150 150 150 机器人与障碍物的距离至少超过 10 10 10 个单位 规定机器人的行走路径由直线段和圆弧组成,其中圆弧是机器人转弯路径。 机器人不能折线转弯,转弯路径由与直线路径相切的一段圆弧组成,也可以由两

    2024年04月17日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包