文章目录
- 题目
- AC代码
题目
本题链接:You Are the One
本博客给出本题截图:
AC代码
#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> using namespace std; const int N = 110; int f[N][N]; int d[N]; int s[N]; int main() { int T; cin >> T; int t = 1; while (T -- ) { int n; cin >> n; for (int i = 1; i <= n; i ++ ) cin >> d[i]; memset(f, 0, sizeof f); //memset(f, 0x3f, sizeof f); memset(s, 0, sizeof s); for (int i = 1; i <= n; i ++ ) s[i] = s[i - 1] + d[i]; for (int i = 1; i <= n; i ++ ) f[i][i] = 0; for (int len = 2; len <= n; len ++ ) for (int i = 1; i + len - 1 <= n; i ++ ) { int j = i + len - 1; f[i][j] = 0x3f3f3f3f; for (int k = i; k <= j; k ++ ) { int w = (k - i) * d[i] + (k - i + 1) * (s[j] - s[k]); f[i][j] = min(f[i][j], f[i + 1][k] + f[k + 1][j] + w); } /* for (int k = 1; k <= len; k ++ ) { int w = d[i] * (k - 1) + k * (s[j] - s[i + k - 1]); f[i][j] = min(f[i][j], f[i + 1][i + k - 1] + f[i + k][j] + w); } */ } printf("Case #%d: %d\n", t ++, f[1][n]); } return 0; }