首页 > 其他分享 >2019字节笔试

2019字节笔试

时间:2023-05-27 22:22:37浏览次数:30  
标签:机器人 字节 int max 笔试 list 2019 能量 建筑

  机器人跳跃问题 机器人正在玩一个古老的基于DOS的游戏。游戏中有N+1座建筑——从0到N编号,从左到右排列。编号为0的建筑高度为0个单位,编号为i的建筑的高度为H(i)个单位。    起初, 机器人在编号为0的建筑处。每一步,它跳到下一个(右边)建筑。假设机器人在第k个建筑,且它现在的能量值是E, 下一步它将跳到第个k+1建筑。它将会得到或者失去正比于与H(k+1)与E之差的能量。如果 H(k+1) > E 那么机器人就失去 H(k+1) - E 的能量值,否则它将得到 E - H(k+1) 的能量值。   游戏目标是到达第个N建筑,在这个过程中,能量值不能为负数个单位。现在的问题是机器人以多少能量值开始游戏,才可以保证成功完成游戏? 输入描述:

第一行输入,表示一共有 N 组数据.

第二个是 N 个空格分隔的整数,H1, H2, H3, ..., Hn 代表建筑物的高度
输出描述:
输出一个单独的数表示完成游戏所需的最少单位的初始能量
示例1 输入例子:
5
3 4 3 2 4
输出例子:
4
示例2 输入例子:
3
4 4 4
输出例子:
4
示例3 输入例子:
3
1 6 4

这道题目可以用二分正着推过去,不过要注意,需要进行剪枝,因为公式是E -(H-E) 如果此时E已经是数组中的最大值的情况,后面肯定是true了,因为H-E是负数,每次模拟下去肯定是越来越大的,所以可以直接退出
代码如下
package com.execise.test1093;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author zhs
 * @date 2023/5/27
 */
public class Testnewke7 {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
            ArrayList<Integer> list= new ArrayList<Integer>();
            int max=0;
            for(int i=0;i<a;i++){
                list.add(in.nextInt());
                max=Math.max(list.get(i),max);
            }

            int left=0;
            int right= max;
            int res=-1;
            while(left<=right){
                int mid=left+(right-left)/2;

                if(canSuccess(list,mid)){
                    res=mid;
                    right=mid-1;
                }else{
                    // 太小了
                    left=mid+1;
                }
            }
            System.out.println(res);
        }
    }

    public static boolean canSuccess(ArrayList<Integer> list,long start){

        int max=0;
        for (int i = 0; i < list.size(); i++) {
            max=Math.max(max,list.get(i));
        }
        for(int i=0;i<list.size();i++){

            long t=start-(list.get(i)-start);
            if(t<0){
                return false;
            }
            if (t>=max){
                return true;
            }
            start=t;
        }




        return true;
    }
}

 

 

标签:机器人,字节,int,max,笔试,list,2019,能量,建筑
From: https://www.cnblogs.com/gulilearn/p/17437470.html

相关文章

  • 字节码增强版的反射, jdk是操作读取我们的字节码文件
    javasissit生成类库 类池子创建,类池制造类,然后制造方法,将方法加到类里面,然后生成class, 再到jvm内存中获取哦  反射获取所有的方法      ......
  • vivado2019.2对modelsim2019.2编译库全报错解析
    最近在用vivado2019.2编译modelsim2019.2库时,所有库全部报错,查阅了博主们的各种解决办法,最终在一篇文章的评论中找到了解决办法,特此记录问题描述:1、ERROR:[Vivado12-5602]compile_simlibfailedtocompileformodelsimwitherrorinxxxlibraries2、ERROR:[Common17-......
  • ciscn_2019_n_1
    ciscn_2019_n_1题目分析这题的主要溢出点在于gets(v1),但是这题有两种思路,第一种方法是通过gets函数溢出修改变量v2的值,使v2能够通过if判断语句,执行system函数,第二种方法还是通过gets(v1)溢出,不过这次是通过libc来实现,将ebp覆盖为system函数的地址第一种方法通过学习栈的工作原理,可......
  • 编译静态库遇到的 LNK2019 报错
    前文提到了CMake学习文末基本涵盖了我遇到的编译问题,但是在得到一个编译好的.lib文件后,还需要放到项目中引用成功后才算真正的完成静态库的编译嗯,我之所以说这些是因为我在项目中链接静态库时出现了LNK2019经典错误错误如下:Libraryd.lib(at_exit.obj):errorLNK2019:......
  • IDEA下查看Java字节码(插件ByteCode Viewer)
    安装jclasslibbytecodeviewer插件 使用结果......
  • 恒生电子笔试(笔试流程,笔试介绍,题型,以往笔试题)
    2019网申渠道已开放,全国行程将在9月份正式开启完整流程:网申-笔试-2轮面试(群面+单面)-收到实习录取通知笔试流程:通过宣讲会,然后现场笔试。一般早上9点开始笔试,笔试时间两小时,大概1个多小时完成答题。笔试后一天或一周,收到人力通知参加面试笔试介绍:1.参加笔试的学生分A-F卷,每套卷子......
  • stm32 编译出的bin文件一定是4字节的倍数吗?
    最近在研究固件升级,在烧写内部FLASH时突然产生一个问题编译出的bin文件一定是4字节的倍数吗?如果不是那么以bin文件总长度除以4的方式写入flash就有可能舍掉了最后的余数。在stackoverflow上得到的答案是:正常情况下编译产生的bin文件是4的倍数,但是并不一定是4字节的倍数,4字节对齐......
  • vs2019打包程序时添加自定义的系统必备组件
     若要创建引导程序包,必须创建产品清单产品清单 product.xml包清单 package.xml 将文件复制到引导程序文件夹位置C:\ProgramFiles(x86)\MicrosoftVisualStudio14.0\SDK\Bootstrapper\Packages文件夹下    ......
  • 字节跳动校招开发一面、二面【凉】
    一二面连着面的一面问的挺基础,基本没有回答不上来的问题算法:最长公共字符串【我自己推出来了,,人生第一次推动态规划】二面算法矩阵的90度转【说思路,没写出来】换题:二分的最左边界【秒了】链表的递归翻转【说思路,没推出来】操作系统操作系统分页的好处CPU线程切换的信号答了磁盘......
  • 数据转换-整数字节数组
    在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务1参考《GMT0009-2012SM2密码算法使用规范》第6节“数据转换”在utils.h和utils.c中完成整数与8位字节串的转换功能(10'):intInt2ByteArr(unsignedinti,unsignedchar*ba);intByteArr2Int(unsignedchar*......