【newcode】牛牛组队竞赛

简介: 【newcode】牛牛组队竞赛

🍃题目链接

组队竞赛


🍃题目

牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。

例如:

一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3

一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3

一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2

为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。

如样例所示:

如果牛牛把6个队员划分到两个队伍

如果方案为:

team1:{1,2,5}, team2:{5,5,8}, 这时候水平值总和为7.

而如果方案为:

team1:{2,5,8}, team2:{1,5,5}, 这时候水平值总和为10.

没有比总和为10更大的方案,所以输出10.


🍃题目详解

先将队员们的水平值依次排序,然后每次选出最大的两个队员和最小的一个队员组队,这样分组就能让所有队伍的水平值总和最大

将队员们的水平值放入数组中,遍历数组,每组平均水平值就在排好序的数组 array.length - (2 * i) 的下标处,在全部相加就可得到所有队伍最大水平值总和

65.png


🍃代码

import java.util.*;
public class Main {
    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        // 当输入的 n 值为0,直接 return ,然后输出 0
        if (n == 0) {
            System.out.println(0);
            return;
        }
        // 定义数组存放各队员水平值,输入的 n 值为队伍数,所以数组大小定义为3 * n
        long[] array = new long[3 * n];
        for (int i = 0; i < 3 * n; i++) {
            array[i] = sc.nextInt();
        }
        // 排序
        Arrays.sort(array);
        long ans = 0;   // 定义结果变量
        for (int i = 1; i <= n; i++) {
            index = array.length - (2 * i);
            ans += array[length];
        }
        System.out.println(ans);
    }
}
目录
相关文章
|
6月前
|
存储
每日一题——leetcode682.棒球比赛
每日一题——leetcode682.棒球比赛
|
存储 人工智能 BI
每日一题——奖学金
 哈喽大家好,我是保护小周ღ,本期为大家带来的是博主在牛客网上遇到的一道笔试题,题目不难,但是有点复杂(博主太菜了),博主在做题的过程中使用到了,结构体,动态内存开辟,数据排序,相关知识,包括写着写着被迫使用goto语句,还是值得学习一下的,有没有朋友有其他的解法,欢迎留言啊~
143 0
|
机器学习/深度学习 人工智能 自然语言处理
1036组队比赛
1036组队比赛
123 0
1275: [蓝桥杯2015决赛]五星填数
五星图案节点填上数字:1~12,除去7和11。要求每条直线上数字和相等。
1275: [蓝桥杯2015决赛]五星填数
(JAVA编程练习):两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。抽签名单已经决定,有人向队员打听比赛名单。a说他不和x比,c说他不和x,z比,编写程序找出比赛名单。
(JAVA编程练习):两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。抽签名单已经决定,有人向队员打听比赛名单。a说他不和x比,c说他不和x,z比,编写程序找出比赛名单。
(JAVA编程练习):两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。抽签名单已经决定,有人向队员打听比赛名单。a说他不和x比,c说他不和x,z比,编写程序找出比赛名单。
试题历届真题跑步锻炼【第十一届】【省赛】【B组】(C++)
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝每天都锻炼身体。正常情况下,小蓝每天跑 11 千米。如果某天是周一或者月初(11 日),为了激励自己,小蓝要跑 22 千米。如果同时是周一或月初,小蓝也是跑 22 千米。 小蓝跑步已经坚持了很长时间,从 20002000 年 11 月 11 日周六(含)到 20202020 年 1010 月 11 日周四(含)。请问这段时间小蓝总共跑步多少千米?
147 0