ローカルエリアネットワークのクリップ
6902 ワード
作成日:2022年1月14日午後5:27
私が実現したコードは、入力データが多い(kが大きい)場合に実行時間が長くなります. とは逆に,模範解答では2元探索を利用して範囲を半分に絞り込んで探索するので効率的である. .txtファイルから数値をロードしてリストに入れ、最適な答えのように最大の数値を検索するためにソートします.txtファイルから重複文にロードする過程で、最大値を更新して検索することが有効です.
インプリメンテーションコード
# 랜선 자르기 (결정 알고리즘)
import sys
sys.stdin = open("input.txt", "rt")
k, n = map(int, input().split())
l = [int(input()) for _ in range(k)]
l.sort()
a = sum(l) // n
res = 0
while True:
for x in l:
res += x//a
if res < n:
a -= 1
res = 0
else:
break
print(a)
模範解答
# 랜선 자르기
import sys
#sys.stdin = open("input.txt", "rt")
def Count(len):
cnt = 0
for x in l:
cnt += x//len
return cnt
k, n = map(int, input().split())
l = []
largest = 0
for _ in range(k):
tmp = int(input())
l.append(tmp)
largest = max(largest, tmp) # 가장 큰 수 찾기
lt = 1
rt = largest
while lt <= rt:
mid = (lt+rt)//2
if Count(mid) >= n:
res = mid
lt = mid + 1
else:
rt = mid - 1
print(res)
差異
Reference
この問題について(ローカルエリアネットワークのクリップ), 我々は、より多くの情報をここで見つけました https://velog.io/@lsj8706/랜선-자르기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol