문제 링크
- http://icpc.me/2169
문제 출처
- 2002 KOI 고등부 1번
사용 알고리즘
- DP
시간복잡도
- $O(NM)$
풀이
아래/오른쪽으로만 가면 간단한 DP문제일텐데, 이 문제는 왼쪽으로도 갈 수 있습니다. 그러나 한 번 방문한 위치는 다시 방문하지 못하니 이 점에 주목해서 점화식을 세워봅시다.
한 번 방문한 위치를 다시 방문하지 못한다는 것은, 한 행에서는 동일한 방향으로만 이동할 수 있다는 것을 의미합니다.
점화식을 다음과 같이 정의합시다.
- $L(i, j)$: $(i, j)$에 도달하는 최소 비용. 단, $i$번째 행에서는 오른쪽으로만 이동해야 한다.
- $R(i, j)$: $(i, j)$에 도달하는 최소 비용. 단, $i$번째 행에서는 왼쪽으로만 이동해야 한다.
- $D(i, j)$: $(i, j)$에 도달하는 최소 비용
상태 전이는 다음과 같습니다.
- $L(i, j) = max(D(i-1, j), L(i, j-1)) + A(i, j)$
- $R(i, j) = max(D(i-1, j), R(i, j+1)) + A(i, j)$
- $D(i, j) = max(L(i, j), R(i, j))$
점화식은 $O(NM)$에 계산할 수 있습니다.
전체 코드
1 |
|