華為OD機試【統一限載貨物數最小值】(java)(200分)

1、題目描述

火車站附近的貨物中轉站負責將到站貨物運往倉庫,小明在中轉站負責調度 2K 輛中轉車(K輛干貨中轉車,K 輛濕貨中轉車)貨物由不同供貨商從各地發來,各地的貨物是依次進站,然后小明按照卸貨順序依次裝貨到中轉車,一個供貨商的貨只能裝到一輛車上不能拆裝,但
是一輛車可以裝多家供貨商的貨:中轉車的限載貨物量由小明統一指定,在完成貨物中轉的前提下,請問中轉車的統一限載貨物數最小值為多少。

2、輸入描述

第一行 length 表示供貨商數量 1 <= length <= 104;
第二行 goods 表示供貨數數組 1 <= goods[i] <= 104;
第三行 types[i]表示對應貨物類型,types[i]等于 0 或者 1,其中 0 代表干貨,1 代表濕貨;
第四行 k 表示單類中轉車數量 1 <= k <= goods.length;

3、輸出描述

運行結果輸出一個整數,表示中轉車統一限載貨物數。
備注:中轉車最多跑一趟倉庫。
用例:

輸入
4
3 2 6 3
0 1 1 0
2輸出
6ps:
貨物1和貨物4為干貨,由2輛干貨中轉車中轉,每輛車運輸一個貨物,限載為3
貨物2和貨物3為濕貨,由2輛濕貨中轉車中轉,每輛車運輸一個貨物,限載為6
這樣中轉車統一限載貨物數可以設置為6(干貨車和濕貨車限載最大值),是最小的取值

溫馨提示!!!
華為OD機試考試官方會對考生代碼查重。華為od機試因為有題庫所以有很大的概率抽到原題。如果碰到了題庫中的原題,千萬不要直接使用題解中的代碼,一定要做些修改,比如代碼中的變量名,除此之外,代碼的組織結構和邏輯也要進行一些改變,所以在日常的刷題中,要提前編寫好屬于自己的代碼。

4、題解

根據題目中的描述,遍歷每一個貨物,判斷是干貨還是濕貨,然后判斷當前車是否能夠裝下這個貨物,若當前能夠裝下,則將貨物裝入車,若裝不下時,若當前的干貨車或濕貨車已經達到了最大數量,則返回無法按照限制裝貨,否則,將干貨車或濕貨車數量+1,將貨物裝入新的車,計算出最大最小限載數,使用二分法不斷地求解滿足要求的最小限載數。
代碼如下:

public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = Integer.parseInt(sc.nextLine());int[] goods = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();// 0代表干貨,1代表濕貨int[] types = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();// 單類中轉車數量int k = sc.nextInt();// 初始最小限和最大限載貨物數int minLimit = 0;int maxLimit = 0;for (int i = 0; i < n; i++) {minLimit = Math.max(minLimit, goods[i]);maxLimit += goods[i];}while (minLimit <= maxLimit) {int limit = (minLimit + maxLimit) / 2;int dryCarCount = 0;int wetCarCount = 0;int dryCarSum = 0;int wetCarSum = 0;// 是否可以限載貨物boolean isCan = true;// 遍歷供貨商,按照限載貨物數裝貨到中轉車for (int i = 0; i < n && isCan; i++) {if (types[i] == 0) {// 干貨if (dryCarSum + goods[i] <= limit) {dryCarSum += goods[i];} else {if (dryCarCount + 1 == k) {// 超過限載貨物數且已經達到干貨中轉車數量上限isCan = false;} else {// 超過限載貨物數但還未達到干貨中轉車數量上限dryCarCount += 1;dryCarSum = goods[i];}}} else {// 濕貨if (wetCarSum + goods[i] <= limit) {wetCarSum += goods[i];} else {if (wetCarCount + 1 == k) {// 超過限載貨物數且已經達到濕貨中轉車數量上限isCan = false;} else {// 超過限載貨物數但還未達到濕貨中轉車數量上限wetCarCount += 1;wetCarSum = goods[i];}}}}if (isCan) {maxLimit = limit - 1;} else {minLimit = limit + 1;}}System.out.println(minLimit);
}

執行結果如下:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11118.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11118.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11118.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

二維數組 和 變長數組

在上一期的內容中&#xff0c;為諸君講解到了一維數組&#xff0c;在一維數組的基礎上&#xff0c;C語言中還有著多維數組&#xff0c;其中&#xff0c;比較典型且運用較為廣泛的就是我們今天的主角——二維數組 一 . 二維數組的概念 我們把單個或者多個元素組成的數組定義為一…

VScode 修改 Markdown Preview Enhanced 主題與字體

VScode 修改 Markdown Preview Enhanced 主題與字體 1. 修改前后效果對比2. 修改主題2.1 更改默認主題2.2 修改背景色 3. 修改字體 VS Code基礎入門使用可查看&#xff1a; VS Code 基礎入門使用&#xff08;配置&#xff09;教程 其他Vs Code 配置可關注查看&#xff1a; Vs C…

2024年如何選什么版本FL Studio才適合自己編曲?

fl studio是什么軟件 水果編曲軟件 FL Studio&#xff0c;全稱為Fruity Loops Studio&#xff0c;是一款全能音樂制作環境或數字音頻工作站&#xff08;DAW&#xff09;&#xff0c;集編曲、錄音、剪輯、混音等多種功能于一身。 FL Studio最初名為Fruity Loops&#xff0c;因…

外網如何訪問內網?快解析

由于公網IP資源短缺&#xff0c;我們的電腦大多處于內網環境&#xff0c;如何在外網訪問內網電腦&#xff0c;成為一個令人頭疼的問題&#xff0c;下面我給大家推薦一個非常實用的方法。 1&#xff1a;訪問快解析下載安裝快解析服務器 2&#xff1a;運行軟件&#xff0c;點擊“…

2.4 輸入和顯示

本節必須掌握的知識點&#xff1a; 示例五源代碼 代碼分析 匯編解析 2.4.1 示例五 ■格式化輸入函數scanf scanf函數可以從鍵盤讀取輸入的信息。scanf函數同樣可以像printf函數那樣&#xff0c;通過轉換說明“%d”來限制函數只能讀取十進制數。scanf函數的參數為可變參數…

【算法訓練 day25 修剪二叉搜索樹、將有序數組轉化為二叉搜索樹、把二叉樹搜索轉化為累加樹】

目錄 一、修剪二叉搜索樹-LeetCode 669思路實現代碼個人代碼視頻鏈接代碼 個人問題 二、將有序數組轉化為二叉搜索樹-LeetCode 108思路實現代碼個人問題 三.把二叉樹搜索轉化為累加樹-LeeCode 538思路實現代碼個人問題 一、修剪二叉搜索樹-LeetCode 669 Leecode鏈接: leetcode…

項目管理-計算題公式【復習】2/2

2.【成本】相關公式 2.1掙值分析 三個參數 &#xff08;1&#xff09;計劃價值(PV&#xff0c;Plan Value): PV&#xff1a;計劃工作分配的經批準的預算&#xff0c;是為完成某活動或 WBS 組成部分而準備的一份經批準的預算。不包括管理儲備。 注意&#xff1a;按照計劃截止目…

LwIP 之九 詳解 UDP RAW 編程、示例、API 源碼、數據流

我們最為熟知的網絡通信程序接口應該是 Socket。LwIP 自然也提供了 Socket 編程接口,不過,LwIP 的 Socket 編程接口都是使用最底層的接口來實現的。我們這里要學習的 UDP RAW 編程則是指的直接使用 LwIP 的最底層 UDP 接口來直接實現應用層功能。這里先來一張圖,對 LwIP 內部…

React 和 Vue兩個流行的前端 JavaScript 框架有什么區別?

設計理念&#xff1a; React 是由 Facebook 開發的&#xff0c;專注于構建 UI 組件。它采用了一種聲明式的、組件化的開發模式&#xff0c;通過使用虛擬 DOM 來實現高效的 UI 更新。 Vue 是由尤雨溪開發的&#xff0c;旨在提供一個靈活且易于上手的框架。Vue 也支持組件化開發…

電商技術揭秘營銷相關系列文章合集(4)

相關系列文章 電商技術揭秘相關系列文章合集&#xff08;1&#xff09; 電商技術揭秘相關系列文章合集&#xff08;2&#xff09; 電商技術揭秘相關系列文章合集&#xff08;3&#xff09; 文章目錄 引言集合說明集合文章列表 引言 在數字化浪潮的推動下&#xff0c;電商行…

【35分鐘掌握金融風控策略25】定額策略實戰2

目錄 基于收入和負債的定額策略 確定托底額度和蓋帽額度 確定基礎額度 基于客戶風險評級確定風險系數 計算最終授信額度 確定授信有效期 基于收入和負債的定額策略 在實際生產中&#xff0c;客戶的收入和負債數據大多無法直接獲得&#xff0c;對于個人的收入和負債數據&…

【JavaEE】Spring Boot 入門:快速構建你的第一個 Spring Boot 應用

目錄 第一個SpringBoot程序介紹項目創建創建項目目錄介紹輸出Hello World 第一個SpringBoot程序 介紹 在學習SpringBoot之前, 我們先來認識?下Spring 我們看下Spring官?(https://spring.io/)的介紹 可以看到, Spring讓Java程序更加快速, 簡單和安全. Spring對于速度、簡單…

【論文閱讀筆記】MapReduce: Simplified Data Processing on Large Clusters

文章目錄 1 概念2 編程模型3 實現3.1 MapReduce執行流程3.2 master數據結構3.3 容錯機制3.3.1 worker故障3.3.2 master故障3.3.3 出現故障時的語義 3.4 存儲位置3.5 任務粒度3.6 備用任務 4 擴展技巧4.1 分區函數4.2 順序保證4.3 Combiner函數4.4 輸入和輸出的類型4.5 副作用4.…

用balenaEtcher燒錄ubuntu的iso文件都失敗,所以選用了另一種燒錄的軟件Rufus,然后燒錄成功了+安裝ubuntu的坑

https://releases.ubuntu.com/bionic/進入網頁下載ubuntu 選擇燒錄軟件將下載的Ubuntu燒錄到U盤中 之前用這個U盤燒錄過一次&#xff0c;成功了&#xff0c;后來應該是U盤受損或者是什么其他原因使得用這個U盤總是燒錄失敗 換思路&#xff1a;由于一直使用balenaEtcher燒錄ubu…

3 ESP32的PWM控制

Esp32的PWM控制也配置庫函數&#xff0c;以下就是PWM所用到的函數 1 PWM通道初始化設置 函數原型uint32_t ledcSetup(uint8_t chan, uint32_t freq, uint8_t bit_num)函數功能設定指定LEDC通道的PWM信號頻率和占空比分辨率返回值通道PWM信號的頻率參數說明chan&#xff08;LE…

WebView基礎知識以及Androidx-WebKit的使用

文章目錄 摘要WebView基礎一、啟動調整模式二、WebChromeClient三、WebViewClient四、WebSettings五、WebView和Native交互 Androidx-WebKit一、啟動安全瀏覽服務二、設置代理三、安全的 WebView 和 Native 通信支持四、文件傳遞五、深色主題的支持六、JavaScript and WebAssem…

ipa 功能包調試,分區算法,覆蓋算法測試

參考 wiki 流網絡 flow network 解釋 相關文章 ipa 分區算法 ipa 分區算法總結&#xff0c;部分算法圖解 環境 ubuntu20&#xff0c;ros 版本 noetic 運行測試 按照 readme 提示進行測試&#xff0c;跳過第一個步驟&#xff0c;并不需要 turtlebot3。 執行第三個 launch 報…

vue element checkbox的實現

實現多選非常簡單: 手動添加一個el-table-column&#xff0c;設type屬性為selection即可&#xff1b;默認情況下若內容過多會折行顯示&#xff0c;若需要單行顯示可以使用show-overflow-tooltip屬性&#xff0c;它接受一個Boolean&#xff0c;為true時多余的內容會在 hover 時以…

Java8 快速實現List轉map 、分組、過濾等操作

Java 8 是 Java 編程語言的一個重要版本&#xff0c;它引入了許多新特性和改進&#xff0c;使得 Java 開發變得更加高效和現代。 下面我們就來使用Java8 快速實現List轉map 、分組、過濾等操作。 定義1個用戶對象 public class User {private Integer id;private String nam…

計算機通信

一.進程和線程的區別? 1. 進程是資源分配的最小單位, 線程是cpu進行調度的最小單位。 2. 一個進程可以看做一個運行的程序, 一個進程中可以包含多個線程, 線程在進程內執行。 3. 多進程是指操作系統能同時運行多個任務&#xff08;程序&#xff09;&#xff0c;多線程是指在同…