2 条题解
-
0
#include <iostream> using namespace std; const int N=1e3+10; struct node{ int bg; int ed; }a[N]; int b[N],dp[N][N]; int main(){ int n;cin>>n; for(int i=1;i<=n;i++){ cin>>b[i]; b[i+n]=b[i]; } for(int i=1;i<2*n;i++){ a[i].bg=b[i],a[i].ed=b[i+1]; } a[2*n].bg=b[2*n],a[2*n].ed=b[1]; for(int i=2*n-1;i>=1;i--){ for(int j=i+1;j<=2*n&&j-i+1<=n;j++){ for(int k=i;k<j;k++){ dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+a[i].bg*a[k].ed*a[j].ed); } } } int mx=0; for(int i=1;i<=n;i++){ mx=max(mx,dp[i][i+n-1]); } cout<<mx<<endl; return 0; }
信息
- ID
- 230
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 116
- 已通过
- 54
- 上传者