华为OD2023(A卷)基础题23【最短木板长度】

2023-11-09

题目描述:

小明有n块木板,第i(1<=i<=n)块木板的长度为ai。

小明买了一块长度为m的木料,这块木料可以切割成任意块,拼接到已有的木板上,用来加长木板。小明想让最短的木板尽量长。请问小明加长木板后,最短木板的长度最大可以为多少?

输入描述:

输入的第一行包含两个正整数,n(11n1103),m(11m1106)——n表示木板数,m表示木料长度。

输入的第二行包含n个正整数,a1,a2,,,,,an (1<=ai<=106)。

输出描述:

输出的唯一一行包含一个正整数,表示加长木板后,最短木板的长度最大可以为多少?

示例1

输入:
5 3
4 5 3 5 5

输出:
5

说明:
给第1块木板长度增加1,给第3块木板长度增加2后,这5块木板长度变为[5,5,5,5,5],最短的木板的长度最大为5。

示例2
输入:
5 2
4 5 3 5 5

输出:
4

说明:
给第3块木板长度增加1后,这5块木板长度变为[4,5,4,5,5],剩余木料的长度为1。此时剩余木料无论给哪块木板加长,最短木料的长度都为4

import java.util.*;

public class OdAb23 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in); // 创建一个 Scanner 对象,用于读取用户输入

        String a = in.nextLine(); // 读取一行输入,存储在字符串变量 a 中

        String[] s1 = a.split(" "); // 将字符串 a 按空格分割成字符串数组 s1
        int m = Integer.parseInt(s1[0]); // 木板块数
        int n = Integer.parseInt(s1[1]); // 木料长度
        List<Integer> list = new ArrayList<>(); // 创建一个整型列表 存储所有木板

        while (m-- > 0) { // 循环读取 m 个整数并添加到列表中
            list.add(in.nextInt());
        }

        while (n > 0) { // 执行 n 次操作
            Integer mix = list.stream().min(Integer::compareTo).get(); // 使用流查找列表中的最小值并赋值给变量 mix
            for (int j = 0; j < list.size(); j++) { // 遍历列表
                if (list.get(j).equals(mix)) { // 如果列表中第 j 个元素等于最小值 mix
                    if (n <= 0) { // 如果操作次数已经达到 n,则跳出循环
                        break;
                    }
                    list.set(j, mix + 1); // 将第 j 个元素加 1
                    n--; // 操作次数减一
                }
            }
        }

        System.out.println(list.stream().min(Integer::compareTo).get()); // 使用流查找列表中的最小值并输出
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华为OD2023(A卷)基础题23【最短木板长度】 的相关文章

随机推荐

  • Linux相关的小知识点

    Linux 中每个 TCP 连接最少占用多少内存 详细解释 Linux 内核到底长啥样详细解释
  • GPS模块启动模式

    文章目录 GPS启动模式 1 冷启动 2 热启动 3 温启动 GPS模块举例 GPS启动模式 有3种启动模式 冷启动 温启动 热启动 启动时间 冷启动 gt 温启动 gt 热启动 启动时间越长定位越慢 用户使用体验越差 1 冷启动 冷启动是
  • Segmentation简记1-The Liver Tumor Segmentation Benchmark (LiTS)

    创新点 最主要的创新是建立了一个肝脏CT图像分割数据库 总结 类似于综述加上数据库的介绍 没有细看 医学方面时候会用到
  • 并发编程系列文章-Java线程的创建方式

    文章目录 继承Thread类 实现Runnable接口 使用Callable和Future创建有返回值的线程 使用Executor框架创建线程池 几个关键类的关系图 实战例子 常见的Java线程的4中方式包括 继承Thread类 实现Run
  • 用docker命令时报错,提示:Cannot connect to the Docker daemon at unix:///var/run/docker.sock.

    报错现象 root node02 docker ps Cannot connect to the Docker daemon at unix var run docker sock Is the docker daemon running
  • 工作中报错故障集合

    OOM常见报错排查之堆外内存溢出 报错 ExecutorLostFailure executor xxx exited caused by one of the running tasks Reason Container killed b
  • numpy和torch的一些操作

    1 如何把数据从1维扩充成2维 np expand dims x1 axis 1 或者x1 x1 None 从 2 33075 换成两个 1 33075 x1 x1 None 2 numpy trace array 返回数组沿对角线元素的和
  • Unet网络搭建(Pytorch)

    Unet是一个经典的语义分割网络 常常被用于医学影像的分割 在Unet的网络结构中 可以分为卷积模块 下采样模块以及上采样模块 详见下面的网络结构图 在网络的搭建过程中 也是依照分为三大块这种思路进行搭建 话不多说 直接上代码 import
  • Ubuntu 12.04 64位编译android 4.1.1_r3

    一 初始化编译环境 google推荐的编译环境是在Ubuntu LTS 10 04 但是新的LTS版本12 04已经出来 没必要在旧版本上做文章了 很多行特性和驱动10 04上都没有 例如无线网卡驱动 所以果断选择12 04的LTS版本 对
  • NSGA2算法原理及python实现

    git参考代码 Program Name NSGA II py Description This is a python implementation of Prof Kalyanmoy Deb s popular NSGA II algo
  • Python软件编程等级考试三级——20200913B

    Python软件编程等级考试三级 20200913B 理论 单选题 判断题 实操 第一题 第二题 第三题 理论 单选题 1 关于利用CSV模块对文件进行操作 下列描述不正确的是 A CSV是一种常用的文本格式 使用逗号分隔值的 B CSV模
  • DBus 介绍

    一 什么是 DBus D Bus是一个为应用程序间通信的消息总线系统 用于进程之间的通信 1 1 三层架构 1 函数库libdbus gt gt gt gt gt 用于两个应用程序互相联系和交互消息 2 基于 libdbus 构造的消息总线
  • 《Java进阶学习+面试宝典》高级架构师指南-剑指阿里P8

    企业对Java的需求最大 Java程序员的群体也最为庞大 有着 1200万之多 彼此之间都有更多的选择 换句话说 也是最修罗场的 要想在明年的金三银四拿下自己心仪的offer 咱就一定要做好功课 把那些必考点 套路都给吃透了 为此我专门整理
  • Spring Data CrudRepository增删改查方法(八)

    CrudRepository 的主要方法 long count boolean exists Integer arg0
  • 数据结构有哪些

    概念 数据结构 数据用什么样的方式组合在一起 数据结构是计算机存储数据的方式 指相互之间存在一种或多种特定关系的数据元素集合 常见数据结构 数据存储的常用结构有 栈 队列 数组 链表和红黑树 栈 stack 又称堆栈 它是运算受限的线性表
  • springboot基于Java的衣服穿搭推荐系统-计算机毕业设计

    收藏关注不迷路 文章目录 一 项目介绍 二 开发环境 三 功能介绍 四 核心代码 五 效果图 六 文章目录 一 项目介绍 随着人们物质生活水平的提高 对于精神需求也日趋增长 在日常生活中会更加注意外在形象 尤其是在穿衣搭配方面 无论是日常生
  • C++智能指针详解

    1 概述 我们知道除了静态内存和栈内存外 每个程序还有一个内存池 这部分内存被称为自由空间或者堆 程序用堆来存储动态分配的对象即那些在程序运行时分配的对象 当动态对象不再使用时 我们的代码必须显式的销毁它们 在C 中 动态内存的管理是用一对
  • Linux下的两个特殊的文件(可用来清理日志)——/dev/null与/dev/zero

    1 dev null简介 在类Unix系统中 dev null被称为空设备 是一个特殊的设备文件 写入 dev null 会丢弃一切写入其中的数据 但报告写入操作成功 读取 dev null 则会立即得到一个EOF 在Unix行话中 dev
  • OpenMP、MPI、CUDA总结

    文章目录 一 OpenMP 1 1 多执行绪的概念 1 2 多执行绪的程式 1 3 OpenMP 的基本使用 1 4 OpenMP使用详解 二 MPI Message Passing Interface 三 CUDA 3 1 CUDA发展历
  • 华为OD2023(A卷)基础题23【最短木板长度】

    题目描述 小明有n块木板 第i 1 i n 块木板的长度为ai 小明买了一块长度为m的木料 这块木料可以切割成任意块 拼接到已有的木板上 用来加长木板 小明想让最短的木板尽量长 请问小明加长木板后 最短木板的长度最大可以为多少 输入描述 输