2023年华为OD机试(python)B卷-符合要求的结对方式

一、题目

题目描述:

用一个数组A代表程序员的工作能力,公司想通过结对编程的方式提高员工的能力,假设结对后的能力为两个员工的能力之和,求一共有多少种结对方式使结对后能力为N。

二、输入输出

输入描述:
5
1 2 2 2 3
4
第一行为员工的总人数,取值范围[1,1000]
第二行为数组A的元素,每个元素的取值范围[1,1000]
第三行为N的值,取值范围[1,1000]
输出描述:
4
满足结对后能力为N的结对方式总数。

三、示例

示例1 

输入输出示例仅供调试,后台判题数据一般不包含示例
输入:
5
1 2 2 2 3
4
输出:
4
说明:
满足要求的结对方式为:A[0]和A[4],A[1]和A[2],A[1]和A[3],A[2]和A[3]。

四、要求

时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++262144K,其他语言524288K

五、解题思路

  1. 首先,我们需要统计数组arr中每个元素的出现次数,可以使用一个字典freq来实现,其中字典的键是元素的值,字典的值是元素的出现次数。
  2. 然后,我们遍历数组arr中的每个元素num,对于每个元素,我们计算与之配对后的能力值complement,即target - num
  3. 如果complement存在于字典freq中,说明存在一种配对方式使得两个员工的能力之和为target。此时,我们将字典freqcomplement对应的值加到计数器count上。
  4. 注意,如果complementnum相等,说明当前元素可以与自己配对,但是每个元素只能被计数一次,所以需要将计数器count减去1。
  5. 最后,结对方式总数为计数器count除以2(因为每对结对方式会被计算两次)。
  6. 返回计数器count作为结果,即满足结对后能力为target的结对方式总数。

六、参考代码 

# -*- coding: utf-8 -*-
'''
@File    :   2023-B-符合要求的结对方式.py
@Time    :   2023/12/28 00:56:22
@Author  :   mgc 
@Version :   1.0
@Desc    :   None
'''def countPairings(n, arr, target):count = 0  # 计数器,用于记录满足结对后能力为target的结对方式总数# 创建一个字典,用于统计数组arr中每个元素的出现次数freq = {}for num in arr:freq[num] = freq.get(num, 0) + 1# 遍历数组arr中的每个元素for num in arr:complement = target - num  # 计算与当前元素配对后的能力值# 如果配对的能力值存在于数组arr中if complement in freq:count += freq[complement]  # 更新计数器,增加配对方式的数量# 如果配对的能力值与当前元素相等,需要将当前元素的出现次数减一if complement == num:count -= 1# 结对方式总数为计数器count除以2(因为每对结对方式会被计算两次)return count // 2# 测试代码
n = int(input())  # 员工的总人数
arr = list(map(int, input().split()))  # 数组A的元素
target = int(input())  # 目标能力值Nresult = countPairings(n, arr, target)
print(result)

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

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

相关文章

Unity 贝塞尔曲线工具获取运动轨迹

Unity 贝塞尔曲线工具获取运动轨迹 一、介绍贝塞尔曲线二、Unity中贝塞尔曲线工具介绍1.创建一个空物体挂在上BezierSpline.cs脚本组件2.由上图可知刚创建出来的有两个点和两个手柄组成3.我们可修改其坐标看下效果4.这样我们就可以获得这两个点之间的指定数量的点来作为某个物体…

openGauss学习笔记-177 openGauss 数据库运维-逻辑复制-逻辑解码-逻辑解码概述

文章目录 openGauss学习笔记-177 openGauss 数据库运维-逻辑复制-逻辑解码-逻辑解码概述177.1 功能描述177.2 注意事项177.3 性能 openGauss学习笔记-177 openGauss 数据库运维-逻辑复制-逻辑解码-逻辑解码概述 177.1 功能描述 openGauss对数据复制能力的支持情况为&#xff…

资助26项!基金委公布一批原创探索项目资助结果!

根据《国家自然科学基金原创探索计划项目实施方案(试行)》要求,现将2023年度数理科学部资助的专项项目(指南引导类原创探索计划项目)相关信息予以公示: 国家自然科学基金委员会 数理科学部 2023年12月26日…

Linux 内核学习笔记: hlist 的理解

前言 最近阅读 Linux 内核时,遇到了 hlist,这个 hlist 用起来像是普通的链表,但是为何使用 hlist,hlist 是怎么工作的? 相关代码 hlist_add_head(&clk->clks_node, &core->clks); /*** clk_core_link_…

vue3项目使用pako库解压后端返回zip数据

文章目录 前言一、pako 介绍一些特点和功能:简单示例 二、vue3 实战示例1.安装后引入库安装:引用用自定义hooks 抽取共用逻辑部署小插曲 前言 外部接口返回一个图片数据是经过zip压缩的,前端需要把这个数据处理成可以显示的图片。大概思路:z…

68内网安全-域横向PTHPTKPTT哈希票据传递

今天讲PTH&PTK&PTT, PTH(pass the hash) #利用 lm 或 ntlm 的值进行的渗透测试 PTT(pass the ticket) #利用的票据凭证 TGT 进行的渗透测试 用的Kerberos 协议 PTK(pass the key) #利用的 ekeys aes256 进行的渗透测试 lm加密算法是2003以前的老版&…

vitis HLS中实现canny算法的IP核

一、前言 canny边缘检测主要用于提取图像的边缘,是最常用且有效的边缘检测算法。在AMD赛灵思提供的库函数中,使用xf::cv::Canny和xf::cv::EdgeTracing两个函数实现canny边缘提取。本文举例说明如何在vitis HLS 2023.1中实现canny算法。 二、xf::cv::Cann…

JUC常用并发工具类

JUC常用并发工具类 1、什么是JUC? JUC 就是 java.util.concurrent 包,这个包俗称 JUC,里面都是解决并发问题的一些东西,该包的位置位于 java 下 面的 rt.jar 包下面。 2、4大常用并发工具类 2.1 CountDownLatch CountDownLatch&#x…

基于Java车间工时管理系统(源码+部署文档)

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

《新传奇》期刊投稿论文发表

《新传奇》杂志是经国家新闻出版总署批准、面向国内外公开发行的综合性社科期刊,由湖北省文联主管,湖北今古传奇传媒集团有限公司主办,湖北优秀期刊。本刊旨在坚守初心、引领创新,展示高水平研究成果,支持优秀学术人才…

如何使用 NFTScan NFT API 在 Gnosis 网络上开发 Web3 应用

Gnosis Chain 是一个兼容 EVM 的区块链,专注于快速且低成本的交易功能,采用独特的双通证模型;xDai 是一种用于交易、支付和手续费的稳定币,权益证明(PoS)保护将由 GNO 通过共识层 Gnosis Beacon Chain 提供…

【JVM】虚拟机的组成+字节码文件组成+类的生命周期

什么是JVM? JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。 JVM的功能 1.解释和运行:对字节码文件中的指令实时的解释成机器码让计算机执行。 2.内存管理:自动为对象、方法等分配内存,自动…

【C++干货铺】STL中set和map的介绍和使用

个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 序列式容器 关联式容器 键值对 树形结构的关联式容器 set set的介绍 set的使用 set的模板参数列表 set的构造 ​编辑 set的容量 set的删除和查找 mult…

web等保评测需要实机查看的操作系统、服务器、数据库和应用部分

“等保测评”全称是信息安全等级保护测评。是经公安部认证的具有资质的测评机构,依据国家信息安全等级保护规范规定,受有关单位委托,按照有关管理规范和技术标准,对信息系统安全等级保护状况进行检测评估的活动。 本文陆续将遇到的…

2023“SEED”第四届江苏大数据--新能源赛道 复赛Btop2总结

第一名是真的强!基本都是第一,难以撼动。 昨天新能源赛道终于落下了帷幕,真的不是一般的卷。最后的排名都到了0.0几分的差距。跟队友很辛运复赛B榜单目前进入top3的行列,下面简单总结一下赛事过程。 初赛按照天级别预测未来一周各…

Linux iptables防火墙(一)

1.1 Linux防火墙基础 在 Internet 中,企业通过架设各种应用系统来为用户提供各种网络服务,如 Web 网站、 电子邮件系统、 FTP 服务器、数据库系统等。那么,如何来保护这些服务器,过滤企业不 需要的访问甚至是恶意的入侵呢&a…

算法设计与分析实验报告-贪心算法

校课程的简单实验报告。 算法设计与分析实验报告-递归与分治策略 算法设计与分析实验报告-动态规划算法 算法设计与分析实验报告-贪心算法 dijkstra迪杰斯特拉算法(邻接表法) 算法设计与分析实验报告-回溯法 算法设计与分析实验报告-分支限界法 …

halcon字符识别结果为“\x1A”

最近在做OCR字符识别,遇到了点小问题,记录一下。 由于是项目初期,所以我就打算调halcon自带库去识别一下看看效果如何,结果分类器的结果显示为“\x1A”。如下图 百度搜了一圈没有这个解答,所以就在halcon帮助文档里…

AtCoder Beginner Contest 334 G

G.Christmas Color Grid 2(枚举,Tarjan) 题意: 本题与问题 E E E类似。有一个 H H H行和 W W W列的网格,每个单元格都被涂成红色或绿色。用 ( i , j ) (i,j) (i,j)表示从上到下第 i i i行、从左到右第 j j j列的单元…