1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int a[401], f[401][401], d[401][401]; int main() { int n; scanf("%d", &n); for(int i=1; i<=n; i++) scanf("%d", &a[i]), a[i+n] = a[i]; memset(f, 63, sizeof(f)); for(int i=1; i<=2*n; i++) d[i][i] = a[i], f[i][i] = 0; for(int L=2; L<=n; L++) for(int st=1; st<=2*n-L+1; st++) { int ed = st + L - 1; for(int k=st; k<ed; k++) if(f[st][ed] > f[st][k] + f[k+1][ed] + abs(d[st][k] - d[k+1][ed])) { f[st][ed] = f[st][k] + f[k+1][ed] + abs(d[st][k] - d[k+1][ed]); d[st][ed] = max(d[st][k], d[k+1][ed]); } } int ans = 0x3fffffff; for(int i=1; i<=n; i++) ans = min(ans, f[i][i+n-1]); printf("%d\n", ans); return 0; }
- 1
信息
- ID
- 771
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 28
- 已通过
- 19
- 上传者