문제 링크
- http://icpc.me/13261
사용 알고리즘
- DP
- Divide and Conquer Optimization
시간복잡도
- O(GL log L)
풀이
Divide and Conquer Optimization을 모르신다면 (이 글) 을 먼저 봐주시기 바랍니다.
dp[t][i]를 t명의 간수가 i번 감옥까지 감시를 할 때, 탈옥 위험도의 최소값 이라고 정의합시다.
t번째 간수가 k+1부터 i번 감옥까지 감시를 한다면,
dp[t][i] = min(dp[t-1][k] + C[k+1][i]), (0 ≤ k ≤ i)
이고,
C[k+1][i] = (sum[i] - sum[k]) * (i-k)
입니다. (단, sum배열은 prefix sum입니다.)
이 점화식은 DnC Opt조건을 만족하기 때문에 최적화 기법을 적용할 수 있습니다.
전체 코드
1 |
|