首页 > 试题广场 >

组队竞赛

[编程题]组队竞赛
  • 热度指数:10687 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛举办了一次编程比赛,参加比赛的有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.

输入描述:
输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)
第二行包括3*n个整数a_i(1 ≤ a_i ≤ 10^9),表示每个参赛选手的水平值.


输出描述:
输出一个整数表示所有队伍的水平值总和最大值.
示例1

输入

2
5 2 8 5 1 5

输出

10
头像 默默地敲出bug
发表于 2022-11-26 21:56:15
import java.util.Scanner; import java.util.Arrays; public class Main{ public static void main(String[] args) { Scanner in = new Scann 展开全文
头像 小朋友a
发表于 2022-11-23 10:37:04
【题目解析】: 首先明确,队伍的水平就是队伍成员水平的第二高,第二高意味着要排序,最后一个必然是从后开始选,第一个必然是从开始选,那么第二高当然是从后面选。一个队伍三个成员,即从开始选一个,从后面选两个。然后继续从剩下的数里选。 要的结果是输出一个sum,则只需要推出这个公式即可。 #includ 展开全文
头像 牛客457439245号
发表于 2022-10-15 21:16:07
import java.util.*; public class Main{     public static void main(String[]args){     展开全文
头像 月亮嚼成星星
发表于 2022-11-24 00:20:22
public class Main{ public static void main(String[]args){ Scanner scan=new Scanner(System.in); while(scan.hasNext()){ 展开全文

热门推荐

通过挑战的用户