スパルタ365 5週間(3)木を切る
5339 ワード
注意:「樹木をトリムする」を参照してください。
質問リンク:https://www.acmicpc.net/problem/2805
の中間値 が見つかりました. N本の木から減算値(負数面を含む) を加算. Mと比較する、正しければ が出力される.
-->エラー
!
left変化も
.
忘れないでください:二分探索ソート後 を使用
第5週
白駿2805号は木を切ります
質問リンク:https://www.acmicpc.net/problem/2805
💡 悩む
-->エラー
if sum == M:
print(mid)
break
elif sum > M:
left = mid + 1
else:
right = mid - 1
? 上記のように、中間価格が移動していくうちに、答えがないことがわかりました.! 解決策
!
조건을 만족하는 최대의 나무 절단 높이를 찾으면 탈출한다.
の条件から,Mと完全に一致しない場合が見られた.したがって、mid値ではなくright값을 출력
でなければならない.left変化も
sum>=M
であれば、すべて実現しなければならない.!! スキル
.
悟る
に答える
# middle 값 찾고
# N개의 나무에서 뺀값을 더해서 (음수면 포함)
# M과 비교 후 맞으면 출력
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
trees = list(map(int, input().split()))
trees.sort()
# print(trees)
left = 1
right = trees[-1]
while left<=right:
mid = (left+right)//2
sum = 0
# print('mid:',mid)
for tree in trees:
if tree >= mid:
sum += (tree-mid)
if sum >= M:
left = mid + 1
else:
right = mid - 1
print(right)
Reference
この問題について(スパルタ365 5週間(3)木を切る), 我々は、より多くの情報をここで見つけました https://velog.io/@dawnofspring/스파르탄-365-5주차-3-나무-자르기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol