【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 部门组队编程(200分) - 三语言AC题解(Python/Java/Cpp)

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

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

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

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

📎在线评测链接

https://app5938.acapp.acwing.com.cn/contest/2/problem/OD1060

🌍 评测功能需要 ⇒ 订阅专栏 ⇐ 后私信联系清隆解锁~

🍓OJ题目截图

在这里插入图片描述

文章目录

    • 📎在线评测链接
    • 🍓OJ题目截图
    • 🍊 部门组对编程
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码

🍊 部门组对编程

问题描述

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

  1. l e v e l [ i ] < l e v e l [ j ] < l e v e l [ k ] level[i] < level[j] < level[k] level[i]<level[j]<level[k]
  2. l e v e l [ i ] > l e v e l [ j ] > l e v e l [ k ] level[i] > level[j] > level[k] level[i]>level[j]>level[k]

其中, 0 ≤ i < j < k < n 0 \le i < j < k < n 0i<j<k<n

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

输入格式

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

第二行输入 n n n 个正整数,以空格分隔,表示按员工序号排列的职级 l e v e l [ 0 ] level[0] level[0] l e v e l [ n − 1 ] level[n-1] level[n1]

输出格式

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

样例输入

4
1 2 3 4

样例输出

4

样例输入

3
5 4 7

样例输出

0

数据范围

  • 1 ≤ n ≤ 6000 1 \le n \le 6000 1n6000
  • 1 ≤ l e v e l [ i ] ≤ 1 0 5 1 \le level[i] \le 10^5 1level[i]105

题解

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

具体步骤如下:

  1. 读入员工总数 n n n 以及每个员工的职级 l e v e l level level
  2. 正序计算每个员工作为中间位置所能组成的小组数量:
    • 对于第 i i i 个员工,统计其左侧职级比他低的人数 l e f t [ i ] left[i] left[i]
    • 对于第 i i i 个员工,统计其右侧职级比他高的人数 r i g h t [ i ] right[i] right[i]
    • 累加 l e f t [ i ] × r i g h t [ i ] left[i] \times right[i] left[i]×right[i] 到答案中。
  3. 将员工职级序列反转,然后重复步骤 2。

参考代码

  • Python
n = int(input())
level = list(map(int, input().split()))def count_groups(level):n = len(level)res = 0left = [0] * nright = [0] * nfor i in range(n):for j in range(i):if level[j] < level[i]:left[i] += 1for j in range(i + 1, n):if level[j] > level[i]:right[i] += 1for i in range(n):res += left[i] * right[i]return resres = 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[n];for (int i = 0; i < n; i++) {level[i] = sc.nextInt();}long res = countGroups(level);res += countGroups(reverse(level));System.out.println(res);}private static long countGroups(int[] level) {int n = level.length;long res = 0;int[] left = new int[n];int[] right = new int[n];for (int i = 0; i < n; i++) {for (int j = 0; j < i; j++) {if (level[j] < level[i]) {left[i]++;}}for (int j = i + 1; j < n; j++) {if (level[j] > level[i]) {right[i]++;}}}for (int i = 0; i < n; i++) {res += (long) left[i] * right[i];}return res;}private static int[] reverse(int[] level) {int n = level.length;int[] res = new int[n];for (int i = 0; i < n; i++) {res[i] = level[n - i - 1];}return res;}
}
  • Cpp
#include <bits/stdc++.h>
using namespace std;long long countGroups(vector<int>& level) {int n = level.size();long long res = 0;vector<int> left(n, 0), right(n, 0);for (int i = 0; i < n; i++) {for (int j = 0; j < i; j++) {if (level[j] < level[i]) {left[i]++;}}for (int j = i + 1; j < n; j++) {if (level[j] > level[i]) {right[i]++;}}}for (int i = 0; i < n; i++) {res += (long long) left[i] * right[i];}return res;
}int main() {int n;cin >> n;vector<int> level(n);for (int i = 0; i < n; i++) {cin >> level[i];}long long res = countGroups(level);reverse(level.begin(), level.end());res += countGroups(level);cout << res << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/855760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚特全球链锯文化推广大使活动盛大启航

&#xff08;本台记者报&#xff09;链锯&#xff0c;这一象征着力量与技艺的工具&#xff0c;自诞生以来便见证了人类工业文明的进步。从最初的简易链锯到如今的多功能锂电链锯&#xff0c;彰显了人类对于技艺与科技的追求&#xff0c;其演变历程不仅映射出人类科技的巨大飞跃…

《软件定义安全》之七:SDN安全案例

第7章 SDN安全案例 1.DDoS缓解 1.1 Radware DefenseFlow/Defense4All Radware在开源的SDN控制器平台OpenDaylight&#xff08;ODL&#xff09;上集成了一套抗DDoS的模块和应用&#xff0c;称为Defense4ALL。其架构如下图&#xff0c;主要有两部分&#xff1a;控制器中的安全…

【Pytorch】一文向您详细介绍 model.eval() 的作用和用法

【Pytorch】一文向您详细介绍 model.eval() 的作用和用法 下滑查看解决方法 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕…

数据结构之探索“队列”的奥秘

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构&#xff08;Java版&#xff09; 目录 队列有关概念 队列的使用 队列模拟实现 循环队列的模拟实现 622. 设计循环队列 双端队…

C++ 84 之 文件读写

#include <iostream> #include <cstring> #include <string> using namespace std; #include <fstream> // 文件流的头文件int main() {// 写入: 文件内容// (文件位置&#xff0c; 如果这个不存在&#xff0c; 就新建一个)// 写法1&#xff1a; of…

深度学习项目十六:根据训练好的权重文件推理图片--YOLO系列

文章目录 根据训练好的权重文件推理图片--YOLO系列一、自己构建YOLOv5推理代码1.1 对数据集进行模型训练1.2 对数据集进行模型推理检测1.3 自己编写推理函数1.3.1 针对单张进行推理1.3.2 针对文件夹下的图片进行推理二、自己构建YOLOv8推理代码2.1 对数据集进行模型训练2.2 对数…

安装pytorch环境

安装&#xff1a;Anaconda3 通过命令行查显卡nvidia-smi 打开Anacanda prompt 新建 conda create -n pytorch python3.6 在Previous PyTorch Versions | PyTorch选择1.70&#xff0c;安装成功&#xff0c;但torch.cuda.is_available 返回false conda install pytorch1.7.0…

报表工具数据源的取数处理方式大对比

根据报表的需求&#xff0c;很多报表中的指标数据需要进行预处理&#xff0c;以满足快速抽取和展示的需要。对于帆软报表类似的产品&#xff0c;一般通过建立视图、合并数据表&#xff0c;形成直接应用于模板设计的数据集&#xff0c;报表直接和数据集进行交互、关联。当用户发…

Antd - 上传图片 裁剪图片

目录 本地上传方法【input type"file"】&#xff1a;upload组件【antd】默认接口上传&#xff1a;自定义接口上传&#xff1a;【取消默认上传接口】antd的upload组件beforeUpload还有个比较坑的地方 upload结合裁剪1、antd官方裁剪组件&#xff1a;![在这里插入图片描…

Vue - 第3天

文章目录 一、Vue生命周期二、Vue生命周期钩子三、工程化开发和脚手架1. 开发Vue的两种方式2. 脚手架Vue CLI基本介绍&#xff1a;好处&#xff1a;使用步骤&#xff1a; 四、项目目录介绍和运行流程1. 项目目录介绍2. 运行流程 五、组件化开发六、根组件 App.vue1. 根组件介绍…

python学习笔记-08

面向对象基础(OOP)-上 1. 面向对象概述 面向过程&#xff1a;根据业务逻辑从上到下写代码 函数式&#xff1a;将某功能代码封装到函数中&#xff0c;日后便无需重复编写&#xff0c;仅调用函数即可 面向对象(object oriented programming)&#xff1a;将数据与函数绑定到一起…

微信小程序毕业设计-电影院订票选座系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

【JS重点14】内置构造函数

目录 一:Object构造函数 1 创建对象说明 2 关于Object的三个常用静态方法 Object.keys() Object.values() Object.assign() 二:Array构造函数 1 数组对象的常见实例方法 2 详解reduce实例方法 语法规则&#xff1a; 运行细节&#xff1a; 案例&#xff1a; 3 map()…

【C++高阶】高效搜索的秘密:深入解析搜索二叉树

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;C多态 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀二叉搜索树 &#x1f4d2;1. 二叉搜索树&…

一键解压,无限可能——BetterZip,您的Mac必备神器!

BetterZip for Mac 是一款高效、智能且安全的解压缩软件&#xff0c;专为Mac用户设计。它提供了直观易用的界面&#xff0c;使用户能够轻松应对各种压缩和解压缩需求。 这款软件不仅支持多种压缩格式&#xff0c;如ZIP、RAR、7Z等&#xff0c;还具备快速解压和压缩文件的能力。…

qt 5.6 qmake手册

qt 5.6 qmake手册 &#xff08;笔者翻译的qmake手册&#xff0c;多数是机翻&#xff0c;欢迎评论区纠错修正&#xff09; Qmake工具有助于简化跨不同平台开发项目的构建过程。它自动生成Makefile&#xff0c;因此创建每个Makefile只需要几行信息。您可以将qmake用于任何软件项目…

32.双击列表启动目标游戏

上一个内容&#xff1a;31.加载配置文件中的游戏到辅助列表 以 31.加载配置文件中的游戏到辅助列表 它的代码为基础进行修改 效果图&#xff1a; 添加列表双击事件 实现代码&#xff1a; LPNMITEMACTIVATE pNMItemActivate reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR…

考研数学强化,880+660正确打开方式

1800题基础做完了&#xff1f;做的怎么样&#xff01; 之所以问你做的怎么样&#xff0c;是因为1800题做的好坏&#xff0c;直接决定了你要不要开始做880题和660题。 有的同学1800题做的很好&#xff0c;做完1800题之后开始做880660没毛病 但是有的同学就是纯纯的为了做题而…

python使用哪种数据库

MySQL 是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&#xff0c;关…

阿里云SSL免费证书部署(nginx)

1.先在阿里云领取免费证书 创建证书 下载证书 得到nginx证书和密钥的压缩包 2.配置nginx 将两个文件放进nginx的opt目录下 先检查有没有ngx_http_ssl_module模块 ngixn -V 如果有进入下一步&#xff0c;没有继续 1.找到你nginx的文件 2.进入添加模块 ./configure --with-h…