BAEKJOON#2217ロープ(Greedy)-python
ロープ本
ソース:白駿#2217
タイムアウトメモリ制限2秒192 MB
質問する
N(1≦N≦100000)本のロープがあります.このロープでこのような物体を持ち上げることができます.各ロープの太さや長さが異なると、持ち上げられる物体の重量が異なる可能性があります.
しかし、複数のケーブルを並列に接続すると、各ケーブルに必要な重量を区分することができる.k本のロープを用いて重量wの物体を持ち上げると、各ロープは平均してw/kの重量を必要とする.
各ケーブルに関する情報を取得する場合は、持ち上げられる物体の最大重量を解くプログラムを作成します.すべてのロープを使う必要はなく、何本かのロープを任意に選ぶことができます.
入力
最初の行は整数Nを与える.次のN本のロープには、各ロープが耐えられる最大重量が与えられる.この値は10000を超えない自然数です.
しゅつりょく
最初の行に答えを印刷します.
I/O例
入力例1
2
10
15
サンプル出力1
20
に答える
の意見を打診
まず逆順に各ロープを並べます.
各ケーブルのインデックス+1はこのケーブルの数を表しているので、ケーブルの数に自分(ケーブル)を乗じて割り当てることができる最大容量と考えられます.->greedy
使用可能容量の最大値を選択します.
説明する
インデックス+1(=行数)を適用するには、大きな値からソートする必要があるため、まず
.sort(reverse=True)
で逆順にソートします.最後にリストから最大値を抽出すればよい.
python code
# 백준 2217번
from sys import stdin
def rope(n, weights):
weights.sort(reverse=True)
for i in range(1, n):
weights[i] = weights[i]*(i+1) # 누적 합으로 만들기
# print("weights", weights)
return max(weights)
n = int(stdin.readline())
weights = []
for i in range(n):
weights.append(int(stdin.readline()))
result = rope(n, weights)
print(result)
Reference
この問題について(BAEKJOON#2217ロープ(Greedy)-python), 我々は、より多くの情報をここで見つけました https://velog.io/@nathan29849/BAEKJOON-2217-Greedyテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol