더블릿
30 계단 | 옥 상 | 제출 현황 | Ranking | FAQs | 오류보고 | QandA | 푼   후 | 자유게시판 |
 
koi book 대회 풀이
삭제 | 편집 | 답글
우선은 L이 고정된 경우에 대해 생각해보자. 책의 순서가 정해져 있으므로 전형적인 동적 계획법 문제가 된다. 

를 1~i번째의 책을 꽂을 때 책장 높이의 최소값이라 정의하면,
 의 점화식을 얻는다. 이 때의 시간복
잡도는 이다. 하지만 시간복잡도를 으로 줄일 수 있다.  가 단조증가하므로
고정된 값에 대해   가 같다면 가장 작은 에 대해서만 보면 된다. 

즉, 에서부터 앞으로 오면서 의 값을 더 크게 만드는 에 대해 에 대해서만 봐도 된
다. 값을 더 크게 만든다는 것은 값이 까지의 자기 뒤의 모든 것보다 큼을
의미하므로 그러한 지점을 저장하기 위해 스택을 이용한다.

에 대해 스택의 위에서부터 보면서 현재보다 작은 것들을 다 빼내고 를 집어넣는다. 

스택을 관리하면서 스택에 든 에 대해 바로 다음의 에 대해서는 알맞은 값으로 갱신 해주고 나머지
값은 무한대로 저장한다. 

인덱스 트리를 이용하여 를 만족하는 구간에서의 최소값을 구하고 구간 가장 앞의 j에서도 최소가 될 수 있으므로 비교해서 최소값을 구한다.

이제 고정된 에 대해 최소의 를 구하는 문제는 해결된다.

본 문제는 중 큰 값을 최소화하는 문제인데 이 증가함에 따라 최소의 가 단조감소하므로 의 최대값은 쭉 감소하다가 최소가 되는 지점부터 다시 증가하므로 이분검색을 사용하여 최소가 되는 점을 찾을 수 있다. 

이런 식으로 하면 총 시간복잡도 로 해결
 
2012-08-03 21:18 , testid
삭제 | 편집 | 답글

ㄷㄷ 이 풀이를 어디서 찾으셨나요... 신기하네요.

 
2012-08-03 22:40 , Fate
삭제 | 편집 | 답글
대회 주관 사이트에서 찾았습니다.www.nia.or.kr/koi
 
2012-08-04 10:33 , testid
삭제 | 편집 | 답글

제가 찾질 못한거였군요. ^^ 풀이가 올라와있는데, 풀이대로 안풀어졌네요. ㅠㅠ 조금 더 머리써서 고민해봐야겠어요.

 
2012-08-04 10:52 , Fate
[previous]