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
 - 标签
 - 递交数
 - 170
 - 已通过
 - 84
 - 上传者