AcWing 320. 能量项链
原题链接
简单
作者:
大笔筒
,
2022-02-27 16:29:55
,
所有人可见
,
阅读 162
#include<iostream>
#include<cstring>
using namespace std;
const int N=400;
int w[N];
int f[N][N];
int n;
int ans=0xcf;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>w[i];
w[i+n]=w[i];
}
memset(f,0xcf,sizeof f);
for(int len=1;len<=n+1;len++)
{
for(int i=1;i+len-1<=2*n;i++)
{
int j=i+len-1;
if(len<3) f[i][j]=0;
else
{
for(int k=i+1;k<j;k++)
f[i][j]=max(f[i][j],f[i][k]+f[k][j]+w[i]*w[k]*w[j]);
}
}
}
for(int i=1;i+n<=2*n;i++)
ans=max(ans,f[i][i+n]);
cout<<ans;
return 0;
}