在线机考|2024华为实习秋招春招编程题(最新)——第1题_拔河比赛队员选拔_100分(八)

题目内容

某团队近期需要组织一支队伍参加拔河比赛,团队共有队员n人,比赛队员人数要求为m人,n>m,n个队员按编号,1到n的顺序参加k轮力量测试,每轮的测试成绩用正整数表示。

根据n个队员的力量测试成绩选择比赛队员m人,先选择k轮测试中最好成绩最大的队员,若有多人的最好成绩相等,则优先选择其中第二好成绩最大的队员,依次类推,最后若还有相等的情况,则优先选择编号较小的队员。每个人只能被选择一次。

输入描述

第1行,团队队员总数n,比赛队员要求的人数m,力量测试轮数k

第i+1行 (i从1到n),第i个队员参与力量测试第1~k轮的测试成绩,每轮成绩用空格分隔

n,m和k均为正整数,0<m<n<=10^3;0<k<=10^3,0<每轮测试成绩<=10^5

输出描述

按上述选择顺序选出的比赛队员编号的列表,用空格分隔

样例

输入:

4 3 3
10 12 14
11 12 13
12 15 10
12 11 13
输出:

3 1 2

解题思路

本题的关键在于对队员进行多维度的排序,以确保按照规定的优先级正确选出比赛队员。首先,对每位队员的k轮测试成绩进行降序排序,确保每个队员的成绩从高到低排列。然后,按照每位队员排序后的成绩列表逐项进行比较,优先选择在各个成绩项上表现更优的队员。如果在所有成绩项上都相同,则优先选择编号较小的队员。通过这种多关键字排序的方法,可以有效地从n名队员中筛选出符合要求的m名比赛队员,保证选择过程符合题目要求的优先级规则。

  1. 数据预处理:对于每个队员,将其k轮测试成绩排序,降序排列。这样每个队员的成绩列表从最好到最差。
  2. 排序比较:按照以下优先级对所有队员进行排序:
  • 首先比较每个队员的第一个成绩(最好成绩),成绩高者优先。
  • 若第一成绩相同,则比较第二个成绩,成绩高者优先。
  • 依此类推,直到所有k个成绩都比较完。
  • 若所有成绩都相同,则编号小的队员优先。
  1. 选择队员:排序完成后,选择前m个队员的编号作为比赛队员。

编程实现

C++

#include <bits/stdc++.h>
using namespace std;// 定义队员结构体
struct Player {int id; // 队员编号vector<int> scores; // 排序后的成绩列表
};// 自定义比较函数
bool comparePlayers(const Player &a, const Player &b) {// 比较每个成绩for(int i = 0; i < a.scores.size(); ++i){if(a.scores[i] != b.scores[i]){return a.scores[i] > b.scores[i]; // 成绩高者优先}}// 成绩完全相同,比较编号return a.id < b.id;
}int main(){ios::sync_with_stdio(false);cin.tie(0);int n, m, k;cin >> n >> m >> k; // 输入n, m, kvector<Player> players(n);for(int i = 0; i < n; ++i){players[i].id = i + 1; // 编号从1开始players[i].scores.resize(k);for(int j = 0; j < k; ++j){cin >> players[i].scores[j]; // 输入每轮成绩}// 将成绩排序降序sort(players[i].scores.begin(), players[i].scores.end(), greater<int>());}// 对所有队员排序sort(players.begin(), players.end(), comparePlayers);// 输出前m个队员的编号for(int i = 0; i < m; ++i){if(i > 0) cout << ' ';cout << players[i].id;}return 0;
}

Python

# 定义队员类
class Player:def __init__(self, id, scores):self.id = id# 排序成绩降序self.scores = sorted(scores, reverse=True)# 定义比较函数def __lt__(self, other):for a, b in zip(self.scores, other.scores):if a != b:return a > breturn self.id < other.iddef main():import sysinput = sys.stdin.readdata = input().split()idx = 0n, m, k = map(int, data[idx:idx+3])idx +=3players = []for i in range(1, n+1):scores = list(map(int, data[idx:idx+k]))idx +=kplayer = Player(i, scores)players.append(player)# 排序players.sort()# 输出前m个队员的编号selected = [str(player.id) for player in players[:m]]print(' '.join(selected))if __name__ == "__main__":main()

Java

import java.util.*;
import java.io.*;public class Main {// 定义队员类static class Player implements Comparable<Player>{int id;List<Integer> scores;Player(int id, List<Integer> scores){this.id = id;// 排序降序Collections.sort(this.scores = scores, Collections.reverseOrder());}@Overridepublic int compareTo(Player other){for(int i = 0; i < this.scores.size(); i++){if(!this.scores.get(i).equals(other.scores.get(i))){return other.scores.get(i) - this.scores.get(i); // 降序}}return this.id - other.id; // 编号升序}}public static void main(String[] args) throws IOException{BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String[] first = br.readLine().trim().split("\\s+");int n = Integer.parseInt(first[0]);int m = Integer.parseInt(first[1]);int k = Integer.parseInt(first[2]);List<Player> players = new ArrayList<>();for(int i=1; i<=n; i++){String[] line = br.readLine().trim().split("\\s+");List<Integer> scores = new ArrayList<>();for(int j=0; j<k; j++) scores.add(Integer.parseInt(line[j]));players.add(new Player(i, scores));}// 排序Collections.sort(players);// 输出前m个队员的编号StringBuilder sb = new StringBuilder();for(int i=0; i<m; i++){if(i >0) sb.append(' ');sb.append(players.get(i).id);}System.out.println(sb.toString());}
}

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

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

相关文章

【AI创作】kimi API初体验

一、介绍 接口文档 https://platform.moonshot.cn/docs/guide/migrating-from-openai-to-kimi 收费详情 并发: 同一时间内我们最多处理的来自您的请求数RPM: request per minute 指一分钟内您最多向我们发起的请求数TPM: token per minute 指一分钟内您最多和我们交互的toke…

LLM2Vec: 解锁大语言模型的隐藏能力

LLM2Vec&#xff1a;重新定义大语言模型在自然语言处理中的应用 一种名为 ** LLM2Vec ** 的新方法正在改变我们对大语言模型&#xff08;LLMs&#xff09;在自然语言处理&#xff08;NLP&#xff09;中的使用方式。 研究人员提出了一种创新方法&#xff0c;将通常仅用于生成文…

人工智能安全与隐私——联邦遗忘学习(Federated Unlearning)

前言 在联邦学习&#xff08;Federated Learning, FL&#xff09;中&#xff0c;尽管用户不需要共享数据&#xff0c;但全局模型本身可以隐式地记住用户的本地数据。因此&#xff0c;有必要将目标用户的数据从FL的全局模型中有效去除&#xff0c;以降低隐私泄露的风险&#xf…

Linux(Ubuntu)下ESP-IDF下载与安装完整流程(4)

接前一篇文章:Linux(Ubuntu)下ESP-IDF下载与安装完整流程(3) 本文主要看参考官网说明,如下: 快速入门 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 Linux 和 macOS 平台工具链的标准设置 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 前边几回讲解了第一步 —— …

GAN对抗生成网络(一)——基本原理及数学推导

1 背景 GAN(Generative Adversarial Networks)对抗生成网络是一个很巧妙的模型&#xff0c;它可以用于文字、图像或视频的生成。 例如&#xff0c;以下就是GAN所生成的人脸图像。 2 算法思想 假如你是《古董局中局》的文物造假者&#xff08;Generator,生成器&#xff09;&a…

求职:求职者在现场面试中应该注意哪些问题?

求职者在现场面试中需要注意诸多方面的问题 面试前的准备 了解公司信息&#xff1a; 提前通过公司官网、社交媒体账号、新闻报道等渠道&#xff0c;熟悉公司的发展历程、业务范围、企业文化、主要产品或服务等内容。例如&#xff0c;如果是应聘一家互联网科技公司&#xff0c…

数字图像总复习

目录 一、第一章 二、第三章 三、第四章 四、第五章 五、第八章 六、第十章 作业一 作业二 一、第一章 1.图像文件格式由&#xff08;文件头&#xff09;及&#xff08;图像数据&#xff09;组成 2.常见的图像文件格式&#xff1a;&#xff08;JPEG&#xff09;、&…

使用Fn Connect之后,如何访问到其他程序页面?原来一直都可以!

前言 昨天小白讲过在飞牛上登录Fn Connect&#xff0c;就可以实现远程访问家里的NAS。 接着就有小伙伴咨询&#xff1a;如何远程访问到家里其他需要使用不同端口号才能访问到的软件&#xff0c;比如Jellyfin、Emby等。 这个小白在写文章的时候确实没有考虑到&#xff0c;因为…

(二)当人工智能是一个函数,函数形式怎么选择?ChatGPT的函数又是什么?

在上一篇文章中&#xff0c;我们通过二次函数的例子&#xff0c;讲解了如何训练人工智能。今天&#xff0c;让我们进一步探讨&#xff1a;面对不同的实际问题&#xff0c;应该如何选择合适的函数形式&#xff1f; 一、广告推荐系统中的函数选择 1. 业务目标 想象一下&#x…

Redis 中 Lua 脚本的使用详解

Redis 中 Lua 脚本的使用详解 在 Redis 中,Lua 脚本是一种强大的工具,用于执行复杂的操作并减少网络延迟。Lua 脚本通过 EVAL 命令执行,能够在 Redis 服务器端运行多步操作,从而确保操作的原子性,并提升性能。 1. Lua 脚本的作用 原子性:在 Redis 中,Lua 脚本执行是原子…

利用3DGS中convert.py处理自采数据

前言 3DGS源码中convert.py提供对自采数据集的处理&#xff0c;需要预先安装Colmap和ImageMagick. ubuntu22.04安装colmap 点击进入NVIDIA官网&#xff0c;查看GPU的CMAKE_CUDA_ARCHITECTURES 1、克隆colmap源码&#xff0c;并进入colmap文件夹 git clone https://github.c…

硬件设计-关于ADS54J60的校准问题

目录 简介: 校准模分析: 交错的优势 交错挑战 S/2 fIN处产生杂散。失调不匹配杂散很容易识别,因为只有它位于fS/2处,并可轻松地进行补偿。增益、时序和带宽不匹配都会在输出频谱的fS/2 fIN 处产生杂散;因此,随之而来的问题是:如何确定它们各自的影响。图8以简单的…

GraphRAG: 一种结合图结构和检索增强生成的工程实现思路

引言 随着自然语言处理&#xff08;NLP&#xff09;技术的发展&#xff0c;基于预训练模型的任务如文本生成、问答系统等取得了显著的进步。然而&#xff0c;在处理涉及复杂关系或需要利用外部知识的任务时&#xff0c;现有的方法可能面临挑战。GraphRAG&#xff08;Graph-bas…

数据库入门级SQL优化

1. SELECT * FROM users; 优化原因&#xff1a;使用SELECT *会选择所有列&#xff0c;可能导致不必要的数据传输。应只选择需要的列&#xff0c;例如&#xff1a; SELECT id, name FROM users;2. WHERE age > 30; 优化原因&#xff1a;如果age字段没有索引&#xff0c;查…

六十一:HTTP/2的问题及HTTP/3的意义

随着互联网的快速发展&#xff0c;网络协议的升级成为优化用户体验和提升网络效率的重要手段。HTTP/2 于 2015 年发布&#xff0c;标志着超文本传输协议的重大改进。然而&#xff0c;尽管 HTTP/2 带来了许多新特性&#xff0c;它也存在一定的问题。在此背景下&#xff0c;HTTP/…

什么是神经网络?神经网络的基本组成部分训练神经网络激活函数有哪些局限性和挑战

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

C# 设计模式的六大原则(SOLID)

C# 设计模式的六大原则&#xff08;SOLID&#xff09; 引言 在面向对象编程中&#xff0c;设计模式提供了高效、可复用和可维护的代码结构。SOLID原则是软件设计中的一组重要原则&#xff0c;用于确保代码具有良好的可维护性、可扩展性和灵活性。SOLID是五个设计原则的首字母…

std__invoke 的使用

std__invoke 的使用 文章目录 std__invoke 的使用1. std::invoke 的功能2. 语法3. 使用场景1. 调用普通函数2. 调用成员函数3. 调用成员函数&#xff08;通过指针或引用&#xff09;4. 调用函数对象&#xff08;仿函数&#xff09;5. 调用 Lambda 表达式 4. std::invoke 的优势…

感恩相伴,蓝凌向新成长!一起拥抱数智2025

2024&#xff0c;数字中国&#xff0c;向新奔跑&#xff01;千行百业拥抱数字化、人工智能&#xff0c;蓝凌继续践行“让组织更智慧”的使命&#xff0c;与客户、伙伴等共创共赢&#xff0c;引领中国数智化办公创新发展。感恩相伴24载&#xff0c;让我们一起拥抱数智2025&#…

【算法】模拟退火算法学习记录

写这篇博客的原因是博主本人在看某篇文章的时候&#xff0c;发现自己只是知道SGD这个东西&#xff0c;但是到底是个啥不清楚&#xff0c;所以百度了一下&#xff0c;然后在通过博客学习的时候看到了退火两个字&#xff0c;想到了本科做数模比赛的时候涉猎过&#xff0c;就上bil…