洛谷 1063 能量项链

版权声明: https://blog.csdn.net/nwpu2017300135/article/details/81561965

https://www.luogu.org/problemnew/show/P1063

题解:区间DP,环可以通过复制一份接在后面转化成链进行DP;

代码:

#include <iostream>
#include <cstdio>
using namespace std;
int a[205];
int dp[205][205];
int main()
{
	int n,i,j,k;
	int maxn=0;
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		scanf("%d",&a[i]);
		a[n+i]=a[i];
	}
	for(i=2;i<2*n;i++){
		for(j=i;j>=1&&i-j<n;j--){
			for(k=j;k<i;k++){
				dp[j][i]=max(dp[j][i],dp[j][k]+dp[k+1][i]+a[j]*a[i+1]*a[k+1]);
				if(dp[j][i]>maxn)maxn=dp[j][i];
			}
		}
	}
    cout << maxn << endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/nwpu2017300135/article/details/81561965
今日推荐