#include<cstdio> #include<algorithm> using namespace std; int n, a[256], dp[256][256], l[256], r[256]; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", a + i); for (int j = 0; j < n; j++) { for (int i = j - 1; i >= 0; i--) { l[i] = a[i]; r[j] = a[j]; for (int k = i + 1; k < j; k++) { l[k] = min(l[k - 1], a[k]); r[i + j - k] = min(r[i + j + 1 - k], a[i + j - k]); } dp[i][j] = 1e9; for (int k = i; k < j; k++) dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + abs(l[k] - r[k + 1])); } } printf("%d", dp[0][n - 1]); return 0; }
2262번: 토너먼트 만들기
https://www.acmicpc.net/problem/2262
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기