문제 링크
- http://icpc.me/8984
문제 출처
- 2013 KOI 중등부 3번, 고등부 2번
사용 알고리즘
- DP
시간복잡도
- $O(N \log N)$
풀이
조건을 만족하는 지그재그 선이 지나는 점들을 순서대로 보면, 윗줄과 아랫줄에 있는 점들의 x좌표가 각각 증가하는 형태입니다. 그러므로 DP를 생각해볼 수 있습니다.
윗줄의 $i$지점에서 끝나는 지그재그 선의 최대 길이를 $D_0(i)$, 아랫줄의 $i$지점에서 끝나는 지그재그 선의 최대 길이를 $D_1(i)$라고 정의합시다.
막대기를 정렬한 뒤 순서대로 보면서 $D_0(t) = \max(D_0(t), D_1(d) + len), D_1(d) = \max(D_1(d), D_0(t) + len)$과 같이 점화식을 계산해주면 됩니다. 이때 $len$은 막대기의 길이입니다.
전체 코드
1 |
|