华为OD机试 2025B卷 - 爱吃蟠桃的孙悟空 (2025B卷 200分)

爱吃蟠桃的孙悟空

真题目录: 点击去查看

2025B卷 200分题型

题目描述

孙悟空爱吃蟠桃,有一天趁着蟠桃园守卫不在来偷吃。已知蟠桃园有 N 棵桃树,每颗树上都有桃子,守卫将在 H 小时后回来。

孙悟空可以决定他吃蟠桃的速度K(个/小时),每个小时选一颗桃树,并从树上吃掉 K 个,如果树上的桃子少于 K 个,则全部吃掉,并且这一小时剩余的时间里不再吃桃。

孙悟空喜欢慢慢吃,但又想在守卫回来前吃完桃子。

请返回孙悟空可以在 H 小时内吃掉所有桃子的最小速度 K(K为整数)。如果以任何速度都吃不完所有桃子,则返回0。

输入描述

一行输入为 N 个数字,N 表示桃树的数量,这 N 个数字表示每颗桃树上蟠桃的数量。

第二行输入为一个数字,表示守卫离开的时间 H。

其中数字通过空格分割,N、H为正整数,每颗树上都有蟠桃,且 0 < N < 10000,0 < H

### 关于华为OD2025 A的信息 华为OD作为评估候选人技术水平的重要环节,其题设计通常围绕实际工程场景展开。对于2025年的A相关内容,虽然具体题目尚未公开披露,但可以基于已有资料推测可能涉及的技术领域和考察重点。 #### 技术背景与考察方向 根据已知的参考资料[^1],华为OD主要覆盖以下几个方面: - **数据结构与算法**:这是基础中的核心部,常用于评估候选人的逻辑思维能力和解决问题的能力。 - **系统设计能力**:尤其是布式系统的架构理解以及微服务的设计理念。 - **编程实现能力**:要求考生能够熟练运用至少一种主流编程语言完成指定功能模块开发。 #### 可能的A主题预测 结合引用材料提到的内容[^2],假设2025年A延续以往风格,则可能会包含如下类型的题目: ##### 题目示例 - 微服务集成测时间计算 给定一组相互依赖的服务集合S={s₁,s₂,...,sn}及其对应的加载耗时T={t₁,t₂,…,tn}(单位秒),其中不存在任何循环依赖关系(即不会有形成闭环的情况发生)。现在要执行某个特定目标服务si 的全部前置条件满足后的首次运行操作,请问为了确保该过程顺利完成至少需要耗费多长时间? 此问题本质上属于图论范畴内的拓扑排序应用实例之一,在解决过程中需要用到深度优先遍历或者广度优先搜索方法来确定各个节点之间的先后顺序,并累加相应路径上的权重值得到最后的结果。 以下是采用Python编写的解决方案框架代码片段供参考: ```python from collections import defaultdict, deque def min_time_to_test(n, dependencies, times): graph = defaultdict(list) indegree = [0]*(n+1) # 构建有向无环图(DAG)并统计入度数组 for u,v in dependencies: graph[u].append(v) indegree[v]+=1 queue=deque() dp=[float('inf')]*(n+1) # 初始化队列与动态规划表 for i in range(1,n+1): if not indegree[i]: queue.append(i) dp[i]=times[i-1] while queue: node =queue.popleft() for neighbor in graph[node]: dp[neighbor]=min(dp[neighbor],dp[node]+times[neighbor-1]) indegree[neighbor]-=1 if not indegree[neighbor]: queue.append(neighbor) return max(dp[1:]) if all(x==0 for x in indegree[1:]) else float('-inf') # 测用例 if __name__ == "__main__": n=6 edges=[[1,2],[1,3],[2,4],[2,5],[3,6]] time_costs=[7,8,9,10,11,12] result=min_time_to_test(n,edges,time_costs) print(result) ``` 上述程序实现了利用BFS配合DP的方式快速找到最短所需总时长的功能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无限码力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值