最新华为OD机试真题——(E卷,100分)- 用户调度问题(python)

题目描述整理

在通信系统的应用中,需要对用户进行调度,使得系统资源的消耗尽可能优化。每个用户可以选择三种调度策略(A、B或C),相邻用户不能使用相同的策略。根据不同参数选择的策略,消耗的资源由具体数值来表示。

输入格式
  1. 第一行包含一个整数 ( n ),表示用户的数量。

  2. 接下来的 ( n ) 行分别列出每个用户在采用策略 A、B 和 C 下产生的系统资源消耗,格式为:

    • ( \text{resA} ; \text{resB} ; \text{resC} )
    • 其中 ( \text{resA} )、( \text{resB} ) 和 ( \text{resC} ) 为对应策略的资源消耗值。
输出格式
  • 输出一个整数,表示最优策略组合下的总系统资源消耗。
调度规则
  1. 相邻用户不能选择相同的调度策略。
  2. 算法是局部最优:每用户选当前可以选择的策略中资源消耗最小的。
  3. 如果多个策略的消耗相同,则选择策略中的最后一个(即优先选择C,再选择B,最后选择A)。
示例

输入示例:

3
15 8 17
12 20 9
11 7 5

输出示例:

24

解释说明:

  • 第一位用户选用 B 策略(消耗 8)。
  • 第二位用户选用 C 策略(消耗 9)。
  • 第三位用户选用 B 策略(消耗 7)。

所有用户的资源消耗合计为 8 + 9 + 7 = 24。

python源码

import sys

# 输入获取
user_count = int(input())  # 用户数量
resource_consumptions = [list(map(int, input().split())) for _ in range(user_count)]  # 用户的资源消耗

def find_min_resource_index(resource_array, excluded_index):
    """
    在给定的资源消耗数组中,寻找资源消耗最小的策略索引,排除掉指定的索引。

    :param resource_array: 各策略对应的资源消耗值
    :param excluded_index: 排除的索引(相邻用户策略选择冲突避免)
    :return: 最小资源值的策略索引
    """
    min_resource_value = sys.maxsize  # 设置一个初始最大的资源值
    min_resource_index = -1  # 最小资源值的索引初始化为-1

    for index in range(len(resource_array)):
        if index == excluded_index:
            continue  # 跳过被排除的索引

        if resource_array[index] < min_resource_value:  # 如果当前资源值更小
            min_resource_value = resource_array[index]  # 更新最小资源值
            min_resource_index = index  # 更新最小资源值的索引

    return min_resource_index  # 返回最小资源值索引


# 算法入口
def calculate_total_resource_consumption():
    previous_strategy_index = -1  # 前一个用户策略索引初始化为-1
    total_consumption = 0  # 总资源消耗初始化为0

    for user_index in range(user_count):
        previous_strategy_index = find_min_resource_index(resource_consumptions[user_index], previous_strategy_index)  # 找到当前用户可选的最小资源策略索引
        total_consumption += resource_consumptions[user_index][previous_strategy_index]  # 累加资源消耗

    return total_consumption  # 返回总资源消耗


# 算法调用
print(calculate_total_resource_consumption())  # 输出总资源消耗

关于华为OD

在这里插入图片描述

华为OD机考笔试的难度逐年提升,对于算法基础薄弱或工作后较少接触算法的候选人来说,通过率较低,因此全面刷题库是提高通过率的关键。以下是对华为OD职位的一些关键信息整理:

华为OD职位特点:

  1. 校准与可靠性:经过专业校准,确保高可靠性和长期稳定性。
  2. 集成与功耗:传感器通过单线串行接口集成,体积小,功耗低。
  3. 适用场景:适用于多种应用场景,具有4针单排引脚封装,方便连接。
  4. 工作内容:与正式员工一起在华为研究所办公,工作内容基本相同。
  5. 工作时间:弹性工作制,一般一二四需补工时至晚上20:30,三五正常下班,周末双休,月末周六加班双倍工资。
  6. 学历与经验:要求本科及以上学历,理工类专业优先,有编程语言基础和基础算法知识。
  7. 转正要求:工作满一年,通过专业级可信认证,绩效至少拿过一次A,部门有转正指标。

候选人常见关注问题:

  • 外包职位:外包职位并非没有技术学习机会,关键在于个人能力和项目经验。
  • OD转华为正编:需要连续两次绩效A,但并非绝对要求,关键在于个人能力和部门指标。
  • OD稳定性:华为业务基本稳定,外包职位相比互联网和传统外包公司稳定性更高。
  • OD试用期转正:一般要求通过入门级或工作级可信认证,通过率较高。
  • OD转华为正编要求:工作满一年,通过专业级可信认证,绩效至少拿过一次A,部门有转正指标。

职位适合的候选人:

  • 编程水平、项目经验薄弱,希望快速获得核心项目经验的毕业生。
  • 工作经验丰富,希望突破现有薪资待遇和职业发展的专业人士。
  • 有相关基础或经验,希望获得职业转型机会的候选人。
  • 想加入华为但个人能力未达社招正编要求的候选人。

以下是针对华为OD机试E卷的高效备考指南,结合你的需求整理成结构化方案:


一、E卷题型构成分析

  • 题目来源:1道E卷新题 + 2道D/A/B/C卷旧题(新旧比例约1:2)
  • 分数分布:2道100分题(一星难度) + 1道200分题(二星难度)
  • 通过标准:总分150分(非目标院校建议260+安全分,300+对定级/薪资有利)

二、高效刷题策略

1. 优先级排序
  • Step1:优先刷E卷新题(题库持续更新中,关注最新动态)
  • Step2:重点突破D/A/B/C卷高频旧题(占2/3题目,原题概率高)
  • Step3:按算法分类专项练习(参考下文分类题单)
2. 分类刷题法(附高频题型)
算法分类经典题型举例刷题建议
字符串处理字符串反转、KMP算法、正则匹配熟悉API,避免超时
动态规划背包问题、最长递增子序列、编辑距离掌握状态转移方程
DFS/BFS岛屿问题、迷宫路径、拓扑排序模板题反复练习
贪心算法区间调度、分糖果、跳跃游戏验证最优性条件
二叉树遍历、最近公共祖先、序列化递归/迭代双解法
并查集朋友圈问题、连通分量路径压缩优化
滑动窗口最长无重复子串、最小覆盖子串边界条件敏感
3. 刷题技巧
  • 限时训练:100分题40分钟/题,200分题60分钟/题(模拟考试压力)
  • 闭卷编码:先独立完成再看解析,避免“虚假掌握”
  • 查重规避:修改变量名、调整逻辑顺序、添加注释(直接复制易被查重)

三、考试实战技巧

  1. 环境准备

    • 使用Chrome浏览器,关闭无关网页(防弹窗违规)
    • IDE本地编码后粘贴(避免在线编辑器卡顿)
  2. 答题策略

    • 先做100分题保底,再攻200分题(时间分配建议:40min+40min+60min)
    • 自测用例覆盖边界值(如空输入、超大数组等)
  3. 异常处理

    • 断网/死机可重新登录恢复进度
    • 中途离开需申请(否则可能判作弊)

四、资源推荐

  • 题库更新:关注官方动态及社区新题共享
  • 工具辅助
    • ChatGPT解析算法思路(但需自行编码实现)
    • LeetCode按标签筛选相似题(如华为常考的BFS/DP题型)

五、注意事项

  • 冷冻期:未通过需等待6个月才能再考
  • 语言选择:Java/Python更易上手(但需熟记基础API)
  • 代码规范:注释清晰,避免ctrl+s误操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值