문제 링크
- http://icpc.me/13262
사용 알고리즘
- DP
- Divide and Conquer Optimization
시간복잡도
- O(n2 log n)
풀이
Divide and Conquer Optimization을 모르신다면 (이 글) 을 먼저 봐주시기 바랍니다.
이 글의 설명이 부실한 것 같다면 (이 글) 도 함께 봐주시기 바랍니다.
dp[t][i] = i개의 수를 t개의 그룹으로 나누었을 때, 점수의 최댓값 으로 정의합시다.
t번째 그룹을 k부터 j번째까지의 수로 지정을 한다면,
점화식은 dp[t][i] = max(dp[t-1][k-1] + C[k][j])
로 나타낼 수 있습니다.
이 때, C[k][j]는 k부터 j번째까지의 모든 수를 or한 값입니다.
이 점화식은 DnC Opt조건을 만족하기 때문에 최적화 기법을 적용할 수 있습니다.
전체 코드
1 |
|