題目:組隊競賽【牛客網】
題目要求:
明明舉辦了一次比賽,參加比賽的有3*n個選手,每個選手都有一個水平值a_i.現在讓這些選手進行組隊,一共組成n個隊伍,即為每個隊伍有3人.明明發現隊伍的水平值等于該隊伍隊員中第二高水平值,
例如:
如果明明把這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),表示每個參賽選手的水平值.
輸出描述:
輸出一個整數來表示所有隊伍的水平值總和最大值.
示例:
輸入:
2
5 2 8 5 1 5
輸出
10
核心思想:
創建一個大小為3*n的陣列,通過for回圈遍歷將輸入的元素放入陣列中,對陣列進行排序,將陣列最后兩個元素和第一個元素取出來作為一組可以保證隊伍的水平值最大,依次進行分組,然后取每組中間的值相加
源代碼:
import java.util.*;
public class Main {
public static void main(String[] args) {
int sum = 0;
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
int n = scanner.nextInt();
scanner.nextLine();
int[] array = new int[3*n];
for (int i = 0;i < 3*n;i++){
array[i] = scanner.nextInt();
}
Arrays.sort(array);
for (int j = 2;j < 3*n;j+=2){
sum += array[j];
}
}
System.out.println(sum);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/292482.html
標籤:java
