星际篮球争霸赛/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.mzph.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 …