最新华为OD机试真题-部门组队编程(200分)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

✨ 本系列打算持续跟新华为OD-D卷的三语言AC题解

👏 感谢大家的订阅➕ 和 喜欢💗

📎在线评测链接

=> 部门组队编程(200分) <=

华为OD

🌍 评测功能需要 =>订阅专栏<= 后联系清隆解锁~

🍓OJ题目截图

alt

🍊 部门组对编程

问题描述

LYA所在的部门计划通过结对编程的方式进行项目开发。已知部门中有 名员工,每个员工都有一个独特的职级。结对编程要求从部门中选出三名员工组成一个小组,设这三名员工的序号分别为 ,他们的职级分别为 ,则小组需要满足以下条件之一:

其中,

请你计算在满足上述条件的情况下,可以组建的小组数量。注意,同一员工可以参与多个小组。

输入格式

第一行输入一个正整数 ,表示员工总数。

第二行输入 个正整数,以空格分隔,表示按员工序号排列的职级

输出格式

输出一个整数,表示可以组建的小组数量。

样例输入

4
1 2 3 4

样例输出

4

样例输入

3
5 4 7

样例输出

0

数据范围

题解

可以枚举每个员工作为小组的中间位置,然后统计其左侧职级比他低的人数乘以右侧职级比他高的人数,这样就能得到以该员工为中间人所能组成的小组数量。需要注意的是,为了避免重复统计,我们需要将所有员工按照职级从低到高或从高到低排序,然后再进行统计。

具体步骤如下:

  1. 读入员工总数 以及每个员工的职级
  2. 正序计算每个员工作为中间位置所能组成的小组数量:
    • 对于第 个员工,统计其左侧职级比他低的人数
    • 对于第 个员工,统计其右侧职级比他高的人数
    • 累加 到答案中。
  3. 将员工职级序列反转,然后重复步骤 2。

参考代码

  • Python
n = int(input())
level = list(map(int, input().split()))

def count_groups(level):
    n = len(level)
    res = 0
    left = [0] * n
    right = [0] * n
    
    for i in range(n):
        for j in range(i):
            if level[j] < level[i]:
                left[i] += 1
        for j in range(i + 1, n):
            if level[j] > level[i]:
                right[i] += 1
    
    for i in range(n):
        res += left[i] * right[i]
    
    return res

res = count_groups(level)
res += count_groups(level[::-1])
print(res)
  • Java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] level = new int[

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

最新华为OD机试-E+D卷 文章被收录于专栏

本专栏给大家提供了华为2024最新华为OD-E/D卷的题目汇总和(Java/Cpp/Python)三语言解析 + 部分题目提供OJ在线评测

全部评论
🌍 评测功能需要 订阅专栏 后联系清隆解锁~ #华为od#
点赞 回复 分享
发布于 07-02 19:08 浙江

相关推荐

08-28 20:01
已编辑
门头沟学院 Python
一面:自我介绍盘问项目,主要是在学习课题组做的网约车相关的项目,侧重于盘问关于神经网络训练方面的内容,在训练过程中有没有遇到过拟合的情况?详细描述这种情况?你认为过拟合的原因是什么?怎样解决?优化的指标是什么?模型求解的效果如何?遗传算法相比较其他启发式算法的优缺点?对常用的机器学习模型的了解如何?了解过决策树模型吗?简述随机森林算法和XGboost的区别?是否了解过用神经网络来进行时序预测的方法?手敲冒泡排序最后出了一个数学题,一根长为1的木棍,截为三段,问组成一个三角形的概率是多少?(差点给我难住)随后面试官介绍了组里的业务职责,询问了到岗时间等反问:简单评价我今天面试的表现&nbsp;答:基本满意,时序预测和RNN方面需要再学习下一天后约了二面:自我介绍第一个项目(深挖):项目的痛点是什么?怎么解决?这种解决方法有什么好处?聚类为什么聚成5类?采用什么方式聚类?用了什么距离来比较两个时间序列的相似度?上一问回答了动态规整距离,然后就问这个距离具体是怎么计算的?为什么要采用这种方式?模型的可解释性怎么体现?第二个项目(大致聊了聊):车间调度的项目,大致问了项目背景,目标函数和约束条件反问:进组之后可以接触哪些业务?大致介绍了一下进组后的业务,对实习生的要求之类的其他还问了一些未来职业发展的方向、平时的爱好等二面结束15分钟后,收到了hr的口头offer #滴滴# #算法实习#
查看15道真题和解析
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务