P1063

模板区间dp.
懒癌,于是把石子合并copy了一下。

#include<bits/stdc++.h>
using namespace std;
int m[310],dp[310][310],anss,ans;
int main() {
	ios::sync_with_stdio(0);
	cin.tie(NULL);
	cout.tie(NULL);
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)cin>>m[i];
	for(int i=1;i<=n;i++)m[n+i]=m[i];
	for(int s=1;s<n;s++){
		for(int l=1;l+s<=n*2;l++){
			dp[l][l+s]=0;
			for(int i=1;i<=s;i++){
				dp[l][l+s]=max(dp[l][l+s],dp[l][l+i-1]+dp[l+i][l+s]+m[l]*m[l+i]*m[l+s+1]);
			}
		}
	}
	ans=0;
	for(int i=1;i<=n;i++)ans=max(dp[i][n+i-1],ans);
	cout<<ans;
}
posted @ 2024-10-11 19:58  yzc_is_SadBee  阅读(4)  评论(0编辑  收藏  举报