星際籃球爭霸賽/MVP爭奪戰 - 華為OD機試真題(A卷、Java題解)

華為OD機試題庫《C++》限時優惠 9.9

華為OD機試題庫《Python》限時優惠 9.9

華為OD機試題庫《JavaScript》限時優惠 9.9

針對刷題難,效率慢,我們提供一對一算法輔導, 針對個人情況定制化的提高計劃(全稱1V1效率更高)。

看不懂有疑問需要答疑輔導歡迎私VX: code5bug

華為OD機試真題

題目描述

在星球爭霸籃球賽對抗賽中,最大的宇宙戰隊希望每個人都能拿到MVP。

MVP的條件是單場最高分得分獲得者,可以并列,所以宇宙戰隊決定在比賽中盡可能讓更多隊員上場且讓所有得分的選手得分都相同。

然而比賽過程中的每1分鐘的得分都只能由某一個人包攬。

輸入描述

輸入第一行為一個數字t,表示為有得分的分鐘數(1<=t<=50)

第二行為t個數字,代表每一分鐘的得分p,(1<=p<=50)

輸出描述

輸出有得分的隊員都是MVP時,最少得MVP得分

示例1

輸入:
9
5 2 1 5 2 1 5 2 1輸出:
6說明:
樣例解釋:一共4人得分,分別都為6分
5 + 1
5 + 1
5 + 1
2 + 2 + 2

題解

這道題目屬于**回溯算法(Backtracking)貪心算法(Greedy Algorithm)的結合。我們需要將給定的得分分鐘數分配到一個或多個隊員中,使得每個隊員的總得分相同,并且這個相同的得分盡可能小。這類似于分割等和子集(Partition to K Equal Sum Subsets)**的問題。

解題思路

  1. 問題分析:我們需要將所有的分鐘得分分配給若干個隊員,每個隊員的總得分相同,且這個得分是所有可能中最小的。這意味著我們需要找到一個得分 score,使得所有分鐘得分可以被分成若干組,每組的和恰好是 score,并且 score 是滿足條件的最小值。
  2. 關鍵步驟
    • 計算總和:首先計算所有分鐘得分的總和 total。因為每個隊員的得分必須相同,所以 score 必須是 total 的一個約數。
    • 排序:將分鐘得分降序排序,以便在回溯時優先處理較大的數值,從而更快地剪枝。
    • 回溯檢查:對于每一個可能的 score(從最大值 maxtotal),檢查是否可以將分鐘得分分成 total / score 組,每組的和恰好是 score
  3. 回溯函數canPartitionKSubsets 函數嘗試將分鐘得分分配到 k 個組中,每個組的和不超過 LIMIT(即 score)。通過回溯的方式嘗試所有可能的分配方案。

Java

import java.util.*;
import java.util.stream.IntStream;
/*** @author code5bug*/
public class Main {// 能否將數組等分成k組,每組和為LIMITpublic static boolean canPartitionKSubsets(int[] arr, int k, int LIMIT) {int[] groups = new int[k];return backtrack(arr, 0, groups, LIMIT);}// 回溯函數:嘗試將分鐘得分分配到k個組中,每組和不超過LIMITprivate static boolean backtrack(int[] nums, int idx, int[] groups, int LIMIT) {if (idx == nums.length) return true; // 所有分鐘得分已分配完畢for (int i = 0; i < groups.length; i++) {if (groups[i] + nums[idx] > LIMIT) continue; // 當前組和超過LIMIT,跳過if (i > 0 && groups[i] == groups[i - 1]) continue; // 避免重復分配groups[i] += nums[idx]; // 嘗試將當前分鐘得分分配到第i組if (backtrack(nums, idx + 1, groups, LIMIT)) return true; // 遞歸檢查剩余分鐘得分groups[i] -= nums[idx]; // 回溯}return false;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);// 有得分的分鐘數int t = sc.nextInt();int[] arr = new int[t];for (int i = 0; i < t; i++) {arr[i] = sc.nextInt(); // 每分鐘的得分}// 降序排序,優化回溯剪枝Arrays.sort(arr);reverse(arr);int total = IntStream.of(arr).sum(); // 計算總得分int max = arr[0]; // 最大分鐘得分// 遍歷可能的score,從max到totalfor (int score = max; score <= total; score++) {if (total % score != 0) continue; // score必須是total的約數if (canPartitionKSubsets(arr, total / score, score)) {System.out.println(score); // 找到最小score,輸出并退出break;}}}// 輔助函數:數組降序排序private static void reverse(int[] arr) {int left = 0, right = arr.length - 1;while (left < right) {int temp = arr[left];arr[left] = arr[right];arr[right] = temp;left++;right--;}}
}

整理題解不易, 如果有幫助到您,請給點個贊 ???? 和收藏 ?,讓更多的人看到。🙏🙏🙏

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

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

相關文章

Kubernetes etcd 故障恢復(1)

1.查看集群狀態 獲取主節點和故障節點id ETCDCTL_API3 ./etcdctl --cacert/etc/kubernetes/ssl/new-ca.pem --cert/etc/kubernetes/ssl/etcd.pem --key/etc/kubernetes/ssl/etcd-key.pem --endpoints"https://192.168.7.132:2379,https://192.168.7.134:2379,https://19…

在UI原型設計中,低、高保真原型圖有什么區別?

在數字產品開發中&#xff0c;原型&#xff08;Prototype&#xff09; 是連接創意與落地的橋梁。它通過可視化的方式驗證功能、交互與用戶體驗&#xff0c;避免開發資源浪費。而低保真&#xff08;Lo-Fi&#xff09;與高保真&#xff08;Hi-Fi&#xff09;原型&#xff0c;則是…

使用FastAPI和React以及MongoDB構建全棧Web應用02 前言

Who this book is for 本書適合哪些人閱讀 This book is designed for web developers who aspire to build robust, scalable, and efficient web applications. It caters to a broad spectrum of developers, from those with foundational knowledge to experienced prof…

linux下minio的進程管理腳本

準備工作&#xff1a; 參考鏈接&#xff1a; Deploy MinIO: Single-Node Single-Drive — MinIO Object Storage for Linux 下載&#xff1a; wget https://dl.min.io/server/minio/release/linux-amd64/minio kill-app.sh #!/bin/bash # 文件名&#xff1a; kill-app.sh…

【Linux】編譯安裝 opencv 并鏈接到 VSCode

一、背景 最近打算把現有的一個 python 程序用 c 重寫&#xff0c;進一步提升性能。編輯器使用 VSCode&#xff0c;三方庫需要用到 opencv&#xff0c;要進行編譯安裝。 二、編譯安裝 opencv 1. 更新源 sudo apt update && sudo apt upgrade 2. 安裝依賴庫 安裝編…

Ubuntu 安裝 HAProxy

HAProxy 是什么 HAProxy&#xff08;High Availability Proxy&#xff09; 是一個 高性能、高可用的 TCP 和 HTTP 負載均衡器與代理服務器。 HAProxy 的特點 特性說明支持協議HTTP、HTTPS、TCP高性能使用 C 語言編寫&#xff0c;性能極高高可用與 Keepalived 配合可實現主備健…

Mysql--基礎知識點--91.2--processlist

在 MySQL 中&#xff0c;SHOW PROCESSLIST 是一個常用命令&#xff0c;用于查看當前數據庫服務器上所有正在運行的線程&#xff08;進程&#xff09;信息。以下是關鍵點說明&#xff1a; 1. 命令用法 SHOW FULL PROCESSLIST;輸出字段&#xff1a; 列名含義Id線程唯一標識符&am…

Git標簽刪除腳本解析與實踐:輕松管理本地與遠程標簽

Git 標簽刪除腳本解析與實踐:輕松管理本地與遠程標簽 在 Git 版本控制系統中,標簽常用于標記重要的版本節點,方便追溯和管理項目的不同階段。隨著項目的推進,一些舊標簽可能不再需要,此時就需要對它們進行清理。本文將通過一個完整的腳本,詳細介紹如何刪除本地和遠程的 …

K8S - Harbor 鏡像倉庫部署與 GitLab CI 集成實戰

引言 在 Kubernetes 環境中&#xff0c;容器鏡像的存儲與管理至關重要。企業級鏡像倉庫&#xff08;如 Harbor&#xff09;為團隊提供了安全、穩定、可擴展的鏡像管理解決方案。 一、Harbor 安裝與配置 Harbor 是由 VMware 開源的企業級云原生鏡像倉庫&#xff0c;它不僅支持…

2025年best好用的3dsmax插件和腳本

copitor 可以從一個3dsmax場景里將物體直接復制到另一個場景中 Move to surface 這個插件可以將一些物體放到一個平面上 instancer 實體器&#xff0c;舉例&#xff1a;場景中有若干獨立的光源&#xff0c;不是實體對象&#xff0c;我們可以使用instancer將他變成實體。 paste …

Python爬蟲實戰:研究nodejs aes加密

1. 引言 1.1 研究背景與意義 在當今數字化時代,Web 數據的價值日益凸顯。通過爬蟲技術獲取公開數據并進行分析,能夠為企業決策、學術研究等提供有力支持。然而,為了保護數據安全和隱私,許多網站采用了加密技術對數據進行保護,其中 AES 加密是一種常見且安全的加密算法。…

LGDRL:基于大型語言模型的深度強化學習在自動駕駛決策中的應用

《Large Language Model guided Deep Reinforcement Learning for Decision Making in Autonomous Driving》2024年12月發表&#xff0c;來自北理工的論文。 深度強化學習&#xff08;DRL&#xff09;在自動駕駛決策方面顯示出巨大的潛力。然而&#xff0c;由于DRL的學習效率低…

TDEngine 與 Grafana

目錄 實踐目錄 Grafana 參考文檔 實踐目錄 10.60.100.194&#xff1a;/home/dualven/tdengine Grafana systemctl status grafana-server http://10.60.100.194:3000/ 這個端口與mydoor的new server服務沖突 &#xff08;同時只開一個&#xff09; 參考文檔 運行監…

Edge瀏覽器打開PDF文件顯示空白(每次需要等上一會)

概述 部分pdf文件用edge瀏覽器打開顯示空白&#xff0c;需要等一會才能顯示出來&#xff0c;這很讓人難以接受&#xff0c;用其他瀏覽器和pdf閱讀器打開是正常的&#xff0c;該怎么操作解決&#xff0c;卸載重裝&#xff0c;修復&#xff0c;重置瀏覽器等都無效。 解決辦法 可…

uniapp小程序輪播圖高度自適應優化詳解

在微信小程序開發過程中&#xff0c;輪播圖組件(swiper)是常用的UI元素&#xff0c;但在實際應用中經常遇到高度不匹配導致的空白問題。本文詳細記錄了一次輪播圖高度優化的完整過程&#xff0c;特別是針對固定寬高比圖片的精確適配方案。 問題背景 在開發"零工市場&quo…

Android第三次面試總結之網絡篇補充

一、網絡模型&#xff1a;OSI 七層 vs TCP/IP 四層&#xff08;必考點&#xff09; 1. 分層模型對比 OSI 七層模型TCP/IP 四層模型核心功能Android 相關場景應用層&#xff08;7 層&#xff09;應用層定義數據格式&#xff08;HTTP/HTTPS/FTP/API&#xff09;OkHttp/Retrofit…

postgresql主從集群一鍵搭建腳本分享

腳本1&#xff1a; cat pg_ms_install.sh #!/bin/bash # 基礎環境配置&#xff08;保持不變&#xff09; setenforce 0 >/dev/null 2>&1 || true sed -i "s/SELINUXenforcing/SELINUXdisabled/" /etc/selinux/config systemctl stop firewalld >/dev/n…

LWIP的ICMP協議

ICMP協議簡介 ICMP協議是一個網絡層協議 背景&#xff1a;如果丟包了&#xff0c;IP協議并不能通知傳輸層是否丟包以及丟包的原因。因此我們需要ICMP協議來完成這樣的功能 為什么需要ICMP協議 1&#xff0c;IP 協議本身不提供差錯報告和差錯控制機制來保證數據報遞交的有效…

具身智能機器人開源陪跑計劃(機器人實戰落地)

Who&#xff1a;我們是誰&#xff1f; 主理人背景 華南理工大學碩士畢業&#xff0c;10年機器人研發經驗&#xff0c;5年“互聯網機器人”創業經歷 累計牽頭落地的機器人30多款&#xff0c;累計授權專利80余項&#xff0c;累計論文發表10余篇。 技術履歷 C#、Sql server、SPSS…

Dify 配置網絡爬蟲為知識庫數據來源 (以Jina Reader為例) - 隨筆

API獲取 進入官網獲取免費的API密鑰 官網鏈接&#xff1a;https://jina.ai/reader/ 點擊“<> API”按鈕 點擊復制文本框中的API Key&#xff1a; 進入Dify的知識庫頁面 → 選擇“同步自Web站點” → 選擇“Jina Reader” → 點擊“配置”按鈕 選擇數據來源為Jina …