1
#include <iostream>
2
#include <fstream>
3
4
using namespace std;
5
6
int m,n;
7
int a[201],w[201];
8
long long t[201][201];
9
long long ans;
10
11
void input();
12
void dp();
13
void output();
14
15
int main(){
16
input();
17
dp();
18
output();
19
return 0;
20
}
21
22
void input(){
23
cin>>n;
24
m=2*n-1;
25
for(int i=1;i<=n;i++) cin>>a[i];
26
for(int i=1;i<n;i++) w[i]=a[i+1];w[n]=a[1];
27
for(int i=n+1;i<=m;i++){
28
a[i]=a[i-n];
29
w[i]=w[i-n];
30
}
31
}
32
33
void dp(){
34
int temp=0;
35
int j;
36
memset(t,0,sizeof(t));
37
for(int p=1;p<n;p++)
38
for(int i=1;i<m;i++){
39
j=i+p;
40
if(j<=m){
41
for(int k=i;k<j;k++)
42
t[i][j]=max(t[i][j],t[i][k]+t[k+1][j]+a[i]*w[k]*w[j]);
43
}
44
}
45
for(int i=1;i<=n;i++) ans=max(ans,t[i][i+n-1]);
46
}
47
48
void output(){
49
cout<<ans<<endl;
50
}
51
#include <iostream>2
#include <fstream>3

4
using namespace std;5

6
int m,n;7
int a[201],w[201];8
long long t[201][201];9
long long ans;10

11
void input();12
void dp();13
void output();14

15
int main(){16
input();17
dp();18
output();19
return 0;20
}21

22
void input(){23
cin>>n;24
m=2*n-1;25
for(int i=1;i<=n;i++) cin>>a[i];26
for(int i=1;i<n;i++) w[i]=a[i+1];w[n]=a[1];27
for(int i=n+1;i<=m;i++){28
a[i]=a[i-n];29
w[i]=w[i-n];30
}31
}32

33
void dp(){34
int temp=0;35
int j;36
memset(t,0,sizeof(t));37
for(int p=1;p<n;p++)38
for(int i=1;i<m;i++){39
j=i+p;40
if(j<=m){41
for(int k=i;k<j;k++)42
t[i][j]=max(t[i][j],t[i][k]+t[k+1][j]+a[i]*w[k]*w[j]);43
}44
}45
for(int i=1;i<=n;i++) ans=max(ans,t[i][i+n-1]);46
}47

48
void output(){49
cout<<ans<<endl;50
}51



浙公网安备 33010602011771号