Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- deep voice
- you only look once
- 딥러닝 보코더
- DCTTS
- tacotron
- Vocoder
- 노래합성
- 보코더
- waveglow
- singing voice synthesis
- 학습
- 윈도우
- 음성 합성
- 딥러닝 음성 합성
- 딥러닝
- TTS
- korean tts
- text-to-speech
- 한국어 음성 합성
- YOLO
- 타코트론
- 트레이닝
- melgan
- 한국어 tts
Archives
- Today
- Total
chldkato
백준 2805 나무 자르기 (파이썬) 본문
https://www.acmicpc.net/problem/2805
2805번: 나무 자르기
문제 상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다. 목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱날이 땅으로부터 H미터 위로 올라간다. 그 다음, 한 줄에 연속해있는 나무를 모두 절단해버린다. 따
www.acmicpc.net
1. 최소값 0, 최대값은 가장 큰 나무 높이로 설정하여 이분탐색을 수행한다
2. 현재 중간값으로 모든 나무를 베었을 때 구할 수 있는 나무의 길이를 tree에 저장하여 m과 비교한다
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
a = list(map(int, input().split()))
left, right, ans = 0, max(a), 0
while left <= right:
mid = (left + right) // 2
tree = 0
for i in range(n):
if mid < a[i]:
tree += a[i] - mid
if tree >= m:
ans = mid
left = mid + 1
elif tree < m:
right = mid - 1
print(ans)
'백준' 카테고리의 다른 글
백준 7568 덩치 (파이썬) (0) | 2020.04.27 |
---|---|
백준 10815 숫자 카드 (파이썬) (0) | 2020.04.27 |
백준 2309 일곱 난쟁이 (파이썬) (0) | 2020.04.27 |
백준 18808 스티커 붙이기 (파이썬) (0) | 2020.04.26 |
백준 17281 ⚾ (파이썬) (0) | 2020.04.24 |
Comments