티스토리 뷰
문제
문제 분류
- 난이도 - 중
- 태그 - 동적계획법
문제 풀이
경험이 없으면 풀기 까다로운 문제다. 단순하게 동영상을 순회하면서 풀고자 하면 당연히 시간초과가 발생한다. 동적계획법을 생각해봐도 \(M\)이 10억이라 딱히 감이 오지 않는다. 그런데 다음과 같은 점화식을 세울 수 있으면 문제가 해결된다.
dp[i][j] = i 번 동영상에서 \(2^j\) 분 후, 시청할 동영상
dp[i][j] = dp[ dp[i][j-1] ][j-1]
위의 점화식을 간단하게 설명하면 a번 동영상에서 2x분 후에 시청할 동영상은 a번 동영상에서 x분 후에 시청할 동영상 b를 구한 뒤, 다시 b번 동영상에서 x분 후에 시청할 동영상 c를 구하면 된다는 것이다. 단순하게 1, 2, 3,... 분 후에 시청할 동영상을 계산하는 것이 아니라 \(2^0, 2^1, 2^2, ...\) 분 후에 시청할 동영상을 계산한다는 것이 중요하다. 이것을 가지고, \(M\) 분 후 동영상을 적절히 맞춰가면 된다.
소스 코드
'알고리즘 문제 풀이' 카테고리의 다른 글
777E Hanoi Factory (0) | 2017.03.02 |
---|---|
777D Cloud of Hashtags (0) | 2017.03.01 |
777C Alyona and Spreadsheet (0) | 2017.03.01 |
BOJ 1034 램프 (0) | 2017.02.28 |
BOJ 5419 북서풍 (0) | 2017.02.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- karatsuba
- tree
- Binary search
- branch and bound
- sort
- divide and conquer
- Minimum Spanning Tree
- Square root decomposition
- BFS
- Heap
- Fenwick Tree
- Strings
- math
- sliding window
- Segment Tree
- pattern matching
- suffix array
- parametric search
- Graph
- Dynamic Programming
- Data structure
- search
- kmp search
- constructive algorithms
- implementation
- greedy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함