1 条题解
-
0
#include<cstdio> #include<algorithm> using namespace std; typedef long long ll; const int N=500+5; ll a[N],f[N][N],pre[N]; int n; signed main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%lld",a+i),pre[i]=pre[i-1]+a[i]; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) f[i][j]=1ll<<60; f[i][i]=0; } for(int i=n;i>=1;i--){//注意 i 是倒序,因为在算 f[1][n] 前要先算完 f[2...n][n] for(int j=i+1;j<=n;j++){ for(int k=i;k<j;k++){ f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+pre[j]-pre[i-1]); } } } printf("%lld",f[1][n]); }
- 1
信息
- ID
- 1369
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 4
- 标签
- 递交数
- 123
- 已通过
- 56
- 上传者