华为OD题目:统一限载货物数最小值

2023-11-09

华为OD机试 - 统一限载货物数最小值

题目描述
火车站附近的货物中转站负责将到站货物运往仓库,小明在中转站负责调度2K辆中转车K辆干货中转车,K辆湿货中转车)。货物由不同供货商从各地发来,各地的货物是依次进站,然后小明按照卸货顺序依次装货到中转车,一个供货商的货只能装到一辆车上不能拆装,但是一辆车可以装多家供货商的货;
中转车的限载货物量由小明统一指定,在完成货物中转的前提下,请问中转车的统一限载货物数最小值为多少
输入描述
。第一行 length 表示供货商数量 1 <= length <= 10^4
第二行 goods 表示供货数数组 1 <= goods <= 10^4o
第三行 types表示对应货物类型,types[等于0或者1,:其中0代表干货,1代表湿货
第四行 k表示单类中转车数量 1 <= k <= goods.length
输出描述
运行结果输出一个整数,表示中转车统一限载货物数
备注
中转车最多跑一趟仓库

示例1
输入:
4
3 2 6 3
0 1 1 0
2

输出:
6

说明:
货物1和货物4为干货,由2两干货中转车中转,每辆车运输一个货物,限载为3
货物2和货物3为湿货,由2两湿货中转车中转,每辆车运输一个货物,限载为6
这样中转车统一限载货物数可以设置为6(千货车和湿货车限载最大值),是最小的取值
示例2
输入:
4
3 2 6 8
0 1 1 1
1
输出:
16

说明:
货物1为千货,由1两工货中转车中转,限载为3
货物2、货物3和货物4为湿货,由1两湿货中转车中转,限载为16
这样中转车统一限载货物数可以设置为16 (千货车和湿货车限载最大值),是最小的取值

public class My {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String lenStr = sc.nextLine();
        int len = Integer.parseInt(lenStr);


        String[] strings = sc.nextLine().split(" ");
        int[] goods = Arrays.stream(strings).mapToInt(Integer::parseInt).toArray();

        String[] typeStr = sc.nextLine().split(" ");
        int[] types = Arrays.stream(typeStr).mapToInt(Integer::parseInt).toArray();

        int k = Integer.parseInt(sc.nextLine());
        int result = getResult(len, goods, types, k);
        System.out.println(result);

    }

    public static int getResult(int len, int[] goods, int[] types, int k) {
        int left = 0;
        int right = 0;
        for (int i = 0; i < len; i++) {
            left = Math.max(left, goods[i]);
            right += goods[i];
        }

        while (left < right) {
            int mid = (left + right) / 2;
            if (canDivide(len, goods, types, k, mid)) {
                right = mid;
            }else {
                left = mid + 1;
            }
        }
        return left;

    }

    public static boolean canDivide(int len, int[] goods, int[] types, int k, int limit) {
        int dryCount = 0;
        int wetCount = 0;
        int drySum = 0;
        int wetSum = 0;

        for (int i = 0; i < len; i++) {
            //0-干货, 1-湿货
            if (types[i] == 0) {
                //看这一批 加上 当前货物是否在容量内
                if (drySum + goods[i] <= limit) {
                    drySum += goods[i];
                }else {
                    //如果超出容量了,则需要再加车
                    if (dryCount + 1 == k) {
                        // 没有可用的干货车了,则说明此limit无法完成所有货物的运输,直接返回false
                        return false;
                    }else {
                        // 有可用的干货车,则说明已用掉的干货车数量dryCarCount++,新的干货车装入当前货物goods[i]
                        dryCount++;
                        drySum = goods[i];
                    }
                }
            }else {
                if (wetSum + goods[i] <= limit) {
                    wetSum += goods[i];
                }else {
                    if (wetCount + 1 == k) {
                        return false;
                    }else {
                        wetCount++;
                        wetSum = goods[i];
                    }
                }
            }
        }
        return true;
    }

}

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

华为OD题目:统一限载货物数最小值 的相关文章

  • 如何在Netbeans中插入main方法(快捷方式)

    有时您想运行单个文件来快速测试某些代码 正在输入public static void main String args 每次都很乏味 怎样才能做得更快呢 由于 Netbeans 中预定义的代码模板 这很简单 只需输入psvm并按 Tab 键
  • Hashmap并发问题

    我有一个哈希图 出于速度原因 我希望不需要锁定 假设我不介意过时的数据 同时更新它和访问它会导致任何问题吗 我的访问是获取 而不是迭代 删除是更新的一部分 是的 这会导致重大问题 一个例子是向散列映射添加值时可能发生的情况 这可能会导致表重
  • 位图内存不足错误

    我对这个错误有疑问 我从 URL 制作网站图标解析器 我这样做是这样的 public class GrabIconsFromWebPage public static String replaceUrl String url StringB
  • 在Java中使用命令行编译多个包

    您好 我一直在使用 IDE 但现在我需要从命令行运行和编译 问题是我有多个软件包 我试图找到答案 但没有任何效果 所以我有 src Support java files Me java files Wrapers java files 你知
  • 无法在类对象的 ArrayList 中存储值。 (代码已编辑)

    这基本上是一个 Java 代码转换器 它涉及一个 GUI 让用户输入类类型 名称和方法 为了存储值 我创建了一个类VirtualClass与ArrayList
  • Java、Oracle 中索引处缺少 IN 或 OUT 参数:: 1 错误

    您好 我使用 Netbeans 8 0 2 和 Oracle 11g Express Edition 在 JSF 2 2 中编写了一个图书馆管理系统 我有几个名为 书籍 借阅者 等的页面 以及数据库中一些名为相同名称的表 我的问题是这样的
  • 哪个 Swing 布局管理器可以获得我想要的布局?

    我正在尝试按照这个模型制作一个基本的登录菜单 我决定将整个菜单放入 JPanel 中 以便在连接成功后我可以切换到另一个面板 所以我决定使用 Borderlayout 将标题放在北区 将连接按钮放在南区 我将边框布局的中心本身设置为面板 我
  • Spring3/Hibernate3/TestNG:有些测试给出 LazyInitializationException,有些则没有

    前言 我在单元测试中遇到了 LazyInitializationException 的问题 而且我很难理解它 正如你从我的问题中看到的那样Spring 中的数据库会话 https stackoverflow com questions 13
  • 定期更新 SWT 会导致 GUI 冻结

    Problem 当 GUI 字段定期更新时 SWT 会冻结 我想要一个基于 SWT 的 GUI 其中文本字段的值会定期递增 最初我从单独的线程访问 textField 导致抛出异常 线程 Thread 0 org eclipse swt S
  • JTable 和 JScrollpane 大小的问题

    我有一个JScrollPane with a JTable在里面 在里面JTable我最初有 3 行 稍后添加行 默认JTable我的 3 行很难看 因为JScrollPane calls getPreferredScrollableVie
  • 容器中的 JVM 计算处理器错误?

    最近我又做了一些研究 偶然发现了这一点 在向 OpenJDK 团队抱怨之前 我想看看是否有其他人观察到这一点 或者不同意我的结论 因此 众所周知 JVM 长期以来忽略了应用于 cgroup 的内存限制 众所周知 现在从 Java 8 更新某
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • Jenkins 的代码覆盖率 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何将 Observable>> 转换为 Observable>

    我陷入了如何将以下可观察类型转换 转换为我的目标类型的困境 我有以下类型的可观察值 Observable
  • 在 Java 中将弯音发送到 MIDI 音序器

    我了解启动和运行 MIDI 音序器的基础知识 并且希望能够在播放过程中增加 减小序列的音高 但弯音是发送到合成器而不是音序器的消息 我尝试将音序器的接收器设置为合成器的发射器 当我发送弯音短消息时 音序器保持相同的音调 但随后合成器以新的弯
  • Java:java.util.ConcurrentModificationException

    我正在制作 2D 目前正在研究用子弹射击 子弹是一个单独的类 所有项目符号都存储在称为项目符号的数组列表中 当它超出屏幕一侧 Exception in thread main java util ConcurrentModification
  • 创建正则表达式匹配数组

    在Java中 我试图将所有正则表达式匹配返回到一个数组 但似乎您只能检查模式是否匹配某些内容 布尔值 如何使用正则表达式匹配来形成与给定字符串中的正则表达式匹配的所有字符串的数组 4城堡的回答 https stackoverflow com
  • 改变for循环的顺序?

    我遇到一种情况 我需要根据用户输入以不同的顺序循环遍历 xyz 坐标 所以我是 3D 空间中的一个区域 然后是一组像这样的 for 循环 for int x 0 x lt build getWidth x for int y 0 y lt
  • 如何用表达式语言获取布尔属性?

    如果我有一堂这样的课 class Person private int age public int getAge return age public boolean isAdult return age gt 19 我可以得到age像这样
  • 如何在不同版本的Google App Engine中使用自定义域名?

    我使用谷歌应用程序引擎作为我的 Android 和 Web 应用程序的服务器 我使用 Android Studio 开发了 Android 应用程序 并使用 Eclipse 开发了 Web 应用程序 我在应用程序引擎中部署了两个版本 第一个

随机推荐

  • 【深度学习环境搭建(一)】cuda和pytorch

    深度学习环境搭建 一 cuda和pytorch 系统配置 Python环境配置 CUDA环境配置 pytorch环境配置 系统配置 服务器型号 Dell PowerEdge R730 硬件 CPU Intel Xeon CPU E5 265
  • java date转换timestamp_Java Date转Timestamp

    Java Date转Timestamp 1 Java Date转Timestamp的介绍 我们可以使用java sql Timestamp类的构造函数在Java中将Date转换为Timestamp Timestamp类的构造函数接收长值作为
  • Python生成allure测试报告,allure使用详细说明

    pytest框架自带一个测试报告 内容也相对全面 但是可读性差点 allure生成的测试报告 可改造性强 看起来也美观 使用过程在此总结一下 一 生成allure测试报告 1 下载安装allure pytest插件 我一般都是在pychar
  • bug总结之为什么每次提升完类之后,改变原来类对应的代码位置,UI找不到原来的界面ui类了

    这边注意以下 自己给自己写的一个bug 当你提升完一个类之后 比如qcustomplot类 原先是放在mainwindow cpp同一级目录下 原先位置 后面想把qcustomplot类新建一个qcustomplot文件夹下 那需要做什么
  • 小程序跳转至企业微信客服wx.openCustomerServiceChat

    从小程序跳转至企业微信客服 小程序后台地址 https mp weixin qq com wxamp home guide 扫码登录自己的小程序 第一步 在小程序管理后台的 功能 客服 微信客服 处 填写对应的企业ID 完成绑定 第二步 在
  • CenterFace解读 轻量级anchor_free人脸检测器

    论文地址 https arxiv org ftp arxiv papers 1911 1911 03599 pdf github地址 https github com Star Clouds centerface 此篇文章是参考的Objec
  • 用php的chr和ord函数实现字符串和ASCII码互转

    http shenyongqang blog 163 com blog static 22439113201002941856838 chr和ord函数是用来字符串和ASCII码互转的 ASCII码是计算机所能显示字符的编码 它的取值范围是
  • 浅谈什么是闭包

    什么是闭包 我个人理解为 闭包就是能够读取其他函数内部变量的函数 由于在Javascript语言中 只有函数内部的子函数才能读取局部变量 因此可以把闭包简单理解成 定义在一个函数内部的函数 实际使用场景 封装方法的时使用callback回调
  • CAN与CANOpen(一)

    CAN与CANOpen 一 基本概念 CAN与CANOpen 二 报文格式 CAN与CANOpen 三 错误处理 CAN与CANOpen 四 CANOpen对象字典 CAN与CANOpen 五 PDO和SDO CAN与CANOpen 六 网
  • 【面试总结】--tomcat调优方案

    前段时间参加面试 面试过程中提到服务器的调优方案 这里总结一下 首先说一下tomcat的调优方案 Tomcat本身的优化 Java虚拟机调优 Tomcat 优化分为系统优化 接下来一个个介绍 一 Tomcat本身的优化 Tomcat 的自身
  • js获取当前页面url网址信息

    1 window location href 设置或获取整个 URL 为字符串 var test window location href alert test 返回 http i cnblogs com EditPosts aspx op
  • -bash: mysqldump: command not found

    根目录在 usr local mysql bin mysqldump所以得在此目录下执行 要不就是创建软连接 这个目录是我自己tar安装的时候配置的目录 如果安装的是其他目录换成自己的目录就行了 不过一般都是这个目录吧 1 首先通过下面的命
  • Spring的控制反转(依赖注入),及两种注入方式

    1 提供构造函数来让spring实现构造注入 public class PersonService private String name 提供bean的构造函数 让spring用构造注入的方式来构造cibean public Person
  • nodejs 通过nginx后出现响应慢的解决方法

    最近用了nodejs搭建服务器 然后用了nginx做了反向代理 项目开发需求 没办法 但是发现了经过代理之后发现网页请求变慢了 而且是不能忍的一分钟以上 一开始 怀疑是在nodejs那边的问题 结果在nodejs那边进行了判断 通过写测试代
  • python : is 和==的区别

    Python中的对象包含三要素 id type value 1 id用来唯一标识一个对象 is判断的是a对象是否就是b对象 是通过id来判断的 2 type标识对象的类型 3 value是对象的值 判断的是a对象的值是否和b对象的值相等 是
  • Android音频系统之AudioFlinger(一)

    1 1 AudioFlinger 在上面的框架图中 我们可以看到AudioFlinger 下面简称AF 是整个音频系统的核心与难点 作为Android系统中的音频中枢 它同时也是一个系统服务 启到承上 为上层提供访问接口 启下 通过HAL来
  • 数据模型建模详解

    问题导读 1 数据层次如何划分 2 如何进行数据划分及命名空间约定 3 ODS层分为几部分 数据层次的划分 ODS Operational Data Store 操作数据层 在结构上其与源系统的增量或者全量数据基本保持 一致 它相当于一个数
  • 基于MATLAB的模糊pi控制器的设计

    基于MATLAB的模糊pi控制器的设计 模糊规则隶属函数的建立 a newfis fuzzypid 添加第一个输入变量e a addvar a input e 1 1 a addmf a input 1 N zmf 1 1 3 a addm
  • 用Qt写软件系列二:QCookieViewer(浏览器Cookie查看器)

    预备 继上篇 浏览器缓存查看器QCacheViewer 之后 本篇开始QCookieViewer的编写 Cookie技术作为网站收集用户隐私信息 分析用户偏好的一种手段 广泛应用于各大网站 对于网站的精准营销 使用反馈 数据挖掘等具有不可估
  • 华为OD题目:统一限载货物数最小值

    华为OD机试 统一限载货物数最小值 题目描述 火车站附近的货物中转站负责将到站货物运往仓库 小明在中转站负责调度2K辆中转车K辆干货中转车 K辆湿货中转车 货物由不同供货商从各地发来 各地的货物是依次进站 然后小明按照卸货顺序依次装货到中转