洛谷 P1063 能量项链(区间DP)

嗯...

 

题目链接:https://www.luogu.com.cn/problem/P1063

 

这道题首先要读懂题目,然后往上套区间dp,要转换成链式。

 

AC代码:

 1 #include<cstdio>
 2 #include<iostream>
 3 
 4 using namespace std;
 5 
 6 int a[205],f[405][405];
 7 
 8 int main(){
 9     int n;
10     scanf("%d",&n);
11     for(int i=1;i<=n;i++){
12         scanf("%d",&a[i]);
13         a[n+i]=a[i];
14     }
15     for(int i=2;i<=n+1;i++){
16         for(int l=1;l+i-1<=n*2;l++){
17             int r=l+i-1;
18             for(int k=l+1;k<r;k++){
19                 f[l][r]=max(f[l][r],f[l][k]+f[k][r]+a[l]*a[k]*a[r]);
20             }
21         }
22     }
23     int ans=0;
24     for(int i=1;i<=n;i++) ans=max(ans,f[i][i+n]);
25     printf("%d",ans);
26     return 0;
27 }
AC代码
posted @ 2020-01-13 21:23  dfydn  阅读(107)  评论(0)    收藏  举报