반응형
https://www.acmicpc.net/problem/11066
11066번: 파일 합치기
소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 완성본
www.acmicpc.net
0123
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#include <iostream>
#include <cstring>
#include <algorithm>
#define rep(i,n) for(int i=1;i<=n;i++)
using namespace std;
int t, n, dp[501][501], sum[501];
void input();
void func() {
int total_diff = n - 1;
rep(diff, total_diff) {
rep(i, n-diff) {
int j = i + diff;
for (int k = i; k < j; k++) {
int temp = dp[i][k] + dp[k + 1][j] + sum[j]-sum[i-1];
if (dp[i][j] == 0 || temp < dp[i][j])
dp[i][j] = temp;
}
}
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> t;
while (t--) {
input();
func();
cout << dp[1][n]<<'\n';
}
}
void input() {
memset(dp, 0, sizeof(dp));
cin >> n;
rep(i, n) {
cin >> sum[i];
sum[i] += sum[i - 1];
}
}
|
cs |
반응형
'백준 > DP' 카테고리의 다른 글
백준 9252 [복습필수] (0) | 2021.07.29 |
---|---|
백준 1915 [복습필수] (0) | 2021.07.28 |
백준 1937 (0) | 2021.07.26 |
백준 1890 (0) | 2021.07.23 |
백준 2293 (0) | 2021.07.20 |