문제 링크
- http://icpc.me/13974
문제 출처
- 2015 ACM-ICPC 대전 인터넷 예선 F번
사용 알고리즘
- DP
- Knuth Optimization
시간복잡도
- O(2)
풀이
이 문제는 (여기)에 있는 문제의 입력을 키워놓은 문제입니다.
입력이 최대 5000이기 때문에 O(n2)으로 풀어야합니다.
(이 글) 에 나와있는 최적화 기법을 사용합니다.
dp[i][j] = min(dp[i][k] + dp[k+1][j]) + s[j] - s[i-1]
위 식에서 s[j] - s[i-1]을 C[i][j]라고 잡으면, C[i][j]는 i부터 j번째까지의 파일을 합치는 비용이 됩니다.
D[i][j] = dp[i+1][j]
라고 정의합시다.
dp[i+1][j] = min(dp[i+1][k] + dp[k+1][j]) + C[i][j]
즉, D[i][j] = min(D[i][k] + D[k][j]) + C[i+1][j]
C[i][j]는 i번째부터 j번째까지의 양수의 합이기 때문에 사각부등식과 단조성을 모두 만족합니다.
그러므로 knuth Optimization을 적용할 수 있습니다.
전체 코드
1 |
|