LOJ P10148 能量项链 题解

Analysis

区间dp裸题,因为是环所以存两次

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define maxn 210
 6 #define INF 2139062143
 7 using namespace std;
 8 int n,minn=INF,maxx;
 9 int a[2*maxn],dp_max[2*maxn][2*maxn];
10 int main()
11 {
12     scanf("%d",&n);
13     for(int i=1;i<=n;i++) 
14     {
15         scanf("%d",&a[i]);
16         a[i+n]=a[i];
17     }
18     for(int i=1;i<=2*n;i++)    dp_max[i][i]=0;
19     for(int len=2;len<=n;len++)
20     {
21         for(int i=1;i<=2*n;i++)
22         {
23             int j=i+len-1;
24             if(j>2*n) break;
25             for(int k=i;k<j;k++)
26             {
27                 dp_max[i][j]=max(dp_max[i][j],dp_max[i][k]+dp_max[k+1][j]+a[i]*a[j+1]*a[k+1]);
28             }
29         }
30     }
31     for(int i=1;i<=n;i++) maxx=max(maxx,dp_max[i][i+n-1]);
32     printf("%d",maxx);
33     return 0;
34 } 
35 /*
36 4
37 4 5 9 4
38 */

请各位大佬斧正(反正我不认识斧正是什么意思)

posted @ 2019-08-06 15:26  handsome_zyc  阅读(218)  评论(0编辑  收藏  举报