【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);
    }
}
目录
相关文章
|
4月前
【天梯赛】L1-095 分寝室
输出的方案对应女生都是 24/4=6 人间、男生都是 60/6=10 人间,人数差为 4。满足前三项要求的分配方案还有两种,即女生 6 间(都是 4 人间)、男生 4 间(都是 15 人间);同时,每间女寝人数必须都一样,每间男寝人数必须都一样,也就是女生总人数对女寝数取模为0,男生总人数对男寝数取模为0。输入在一行中给出 3 个正整数 n0​、n1​、n,分别对应女生人数、男生人数、寝室数。按题意模拟,因为知道总寝室数为n,所以可以从1~n-1暴力枚举女寝 i 的数量,那么男寝的数量则为 c-i。
58 6
|
6月前
|
存储
每日一题——leetcode682.棒球比赛
每日一题——leetcode682.棒球比赛
|
6月前
leetcode-682:棒球比赛
leetcode-682:棒球比赛
48 0
LeetCode 682 棒球比赛
用栈实现数字的运算 用switch-case语句对符号进行不同的操作处理 用Stack下的get()方法实现取出栈内第任意个数字
L1-079 天梯赛的善良 (20 分)
L1-079 天梯赛的善良 (20 分)
214 0
|
机器学习/深度学习 人工智能 自然语言处理
1036组队比赛
1036组队比赛
120 0
7-7 天梯赛的善良 (20 分)
7-7 天梯赛的善良 (20 分)
280 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比,编写程序找出比赛名单。