Baek Jun 2004 Project Teams解答(JAVA)
リンクテキスト
質問する
コードプロジェクトの授業を教授した秀燦は、できるだけ公平にプロジェクトチームを設立したいと思っている.1つのプロジェクトグループは2人の学生で構成され、学生ごとに符号化能力が異なる.学生一人一人がチームのメンバーであるべきだ.公正性を高めるために、秀燦はできるだけチームメンバーのコード能力の一致を維持した.学生たちが符号化能力を備えている場合、秀燦のチーム設立に役立つプログラムを作成します.
問題を簡略化するために,学生数を2 n(nは正の整数)と仮定した.各学生siの符号化能力は正整数w(si)で表され,1つのi群giの符号化能力はw(gi)=Σs∈giw(s)で表される.プログラム作成の目的は、Sm=min{w(Gi)|1≦i≦n}を最大化するようにn個のグループG 1,G 2,...およびGnを構成することであり、このときSmが出力される.
例えば、学生の符号化能力が{1、7、5、8}であれば、(8、1)、(7、5)でグループ化することができ、プログラムは9を出力する必要がある.
入力
入力は標準入力です.入力された最初の行は、チーム数を表す正の整数n(1≦n≦5000)を与える.2行目は、学生のsi符号化能力w(si)を表す2 n個の正の整数を、スペースで区切った(1≦w(si)≦100000).学生たちのコード能力は違います.すなわちi≠jすなわちw(si)≠w(sj).
しゅつりょく
出力は標準出力を採用する.1行の標準出力にsmを出力します.
に答える
各学生の点数を入力し、昇順に並べ替えます.
(1,n),(2,n−1),(3,n−2)のように公平を作成し,すべての公平の相違を最小化した.
公平点数の和の最小値を出力すればよい.
ソースコード
質問する
コードプロジェクトの授業を教授した秀燦は、できるだけ公平にプロジェクトチームを設立したいと思っている.1つのプロジェクトグループは2人の学生で構成され、学生ごとに符号化能力が異なる.学生一人一人がチームのメンバーであるべきだ.公正性を高めるために、秀燦はできるだけチームメンバーのコード能力の一致を維持した.学生たちが符号化能力を備えている場合、秀燦のチーム設立に役立つプログラムを作成します.
問題を簡略化するために,学生数を2 n(nは正の整数)と仮定した.各学生siの符号化能力は正整数w(si)で表され,1つのi群giの符号化能力はw(gi)=Σs∈giw(s)で表される.プログラム作成の目的は、Sm=min{w(Gi)|1≦i≦n}を最大化するようにn個のグループG 1,G 2,...およびGnを構成することであり、このときSmが出力される.
例えば、学生の符号化能力が{1、7、5、8}であれば、(8、1)、(7、5)でグループ化することができ、プログラムは9を出力する必要がある.
入力
入力は標準入力です.入力された最初の行は、チーム数を表す正の整数n(1≦n≦5000)を与える.2行目は、学生のsi符号化能力w(si)を表す2 n個の正の整数を、スペースで区切った(1≦w(si)≦100000).学生たちのコード能力は違います.すなわちi≠jすなわちw(si)≠w(sj).
しゅつりょく
出力は標準出力を採用する.1行の標準出力にsmを出力します.
に答える
各学生の点数を入力し、昇順に並べ替えます.
(1,n),(2,n−1),(3,n−2)のように公平を作成し,すべての公平の相違を最小化した.
公平点数の和の最小値を出力すればよい.
ソースコード
import java.util.*;
import java.io.*;
//import java.math.BigInteger;
public class Main{
public static void main(String [] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
final int NUMBER_OF_TEAM = Integer.parseInt(br.readLine());
int member[] = new int [NUMBER_OF_TEAM * 2];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0;i < NUMBER_OF_TEAM * 2; i++) {
member[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(member);
int min = 200000;
for(int i=0;i<NUMBER_OF_TEAM;i++) {
int teamScore = member[i] + member[NUMBER_OF_TEAM*2-1-i];
if(teamScore < min) {
min = teamScore;
}
}
sb.append(min);
sb.append("\n");
bw.write(sb.toString());
bw.flush();
br.close();
bw.close();
}
}
Reference
この問題について(Baek Jun 2004 Project Teams解答(JAVA)), 我々は、より多くの情報をここで見つけました https://velog.io/@phjppo0918/백준-20044-Project-Teams-문제풀이-JAVAテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol