[Algorithm] 🧗白準2217ロープ
0、問題
N(1≦N≦100000)本のロープがあります.このロープでこのような物体を持ち上げることができます.各ロープの太さや長さが異なると、持ち上げられる物体の重量が異なる可能性があります.
しかし、複数のケーブルを並列に接続すると、各ケーブルに必要な重量を区分することができる.k本のロープを用いて重量wの物体を持ち上げると、各ロープは平均してw/kの重量を必要とする.
各ケーブルに関する情報を取得する場合は、持ち上げられる物体の最大重量を解くプログラムを作成します.すべてのロープを使う必要はなく、何本かのロープを任意に選ぶことができます.
入力
最初の行は整数Nを与える.次のN本のロープには、各ロープが耐えられる最大重量が与えられる.この値は10000を超えない自然数です.
しゅつりょく
最初の行に答えを印刷します.
1.アイデア
1)ケーブルを昇順に並べる
2) 1,2, ... wの最大値を検索(k単位)
2.コア解答
1)ケーブルを昇順に並べる
Arrays.sort(arr);
2) 1,2, ... wの最大値を検索(k単位)for(int i=0; i<k; i++)
w = Math.max(w, (k-i)*arr[i]);
3.コード
import java.io.*;
import java.util.Arrays;
public class Greedy_2 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int k = Integer.parseInt(br.readLine());
int w = -1;
int arr[] = new int[k];
for(int i=0; i<k; i++)
arr[i] = Integer.parseInt(br.readLine());
Arrays.sort(arr);
for(int i=0; i<k; i++)
w = Math.max(w, (k-i)*arr[i]);
System.out.println(w);
}
}
4.結果
成功~
Reference
この問題について([Algorithm] 🧗白準2217ロープ), 我々は、より多くの情報をここで見つけました https://velog.io/@kha0318/Algorithm-백준-2217-로프テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol