2018. 5. 31. 15:14, 알고리즘/BOJ
https://www.acmicpc.net/problem/14003
가장 긴 증가하는 부분 수열은 세그먼트 트리 혹은 Binary indexed tree 혹은 binary search를 이용해 $O(NlgN)$에 구현할 수 있습니다. 아무래도 binary search가 구현이 쉬운데, 이 경우에는 수열을 복원하는 것이 조금 문제입니다. 다양한 방법이 있지만 $myLIS[i]$를 $A[0~i]$에서의 LIS 길이로 두고 주어진 수열에서 LIS의 길이를 len이라고 할 때 $i = N-1$부터 확인하면서 $myLIS[i] = len$인 $i$를 출력하고, 이후 $myLIS[i] = len-1$인 $i$를 출력하고 ,... , $myLIS[i] = 1$인 $i$를 출력하면 됩니다.
http://mygumi.tistory.com/303 를 참고하는 것을 추천합니다.
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 11266번: 단절점 (0) | 2018.06.03 |
---|---|
[BOJ] 15803번: PLAYERJINAH’S BOTTLEGROUNDS (0) | 2018.05.31 |
[BOJ] 1940번: 주몽 (0) | 2018.05.31 |
[BOJ] 11402번: 이항 계수 4 (0) | 2018.05.31 |
[BOJ] 15317번: 동방 보수 (2) | 2018.05.30 |
[BOJ] 2398번: Conference Call (0) | 2018.05.28 |
Comments