P1063 能量项链
区间dp模板,记得longlong
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
long long n;
long long a[201];
long long b[201];
long long dp[201][201];
long long ans;
int main(){
scanf("%lld",&n);
for(long long i=1;i<=n;++i){
scanf("%lld",&a[i]);
a[n+i]=a[i];
}
for(long long i=1;i<=2*n;++i){
b[i]=a[i+1];
}
b[2*n]=a[1];
for(long long i=2;i<=n;i++){
for(long long j=1;j+i-1<=2*n;++j)
for(long long k=j;k<j+i-1;++k){
dp[j][j+i-1]=max(dp[j][j+i-1],dp[j][k]+dp[k+1][j+i-1]+a[j]*b[j+i-1]*b[k]);
}
}
for(long long i=1;i<=n+1;++i){
ans=max(ans,dp[i][i+n-1]);
}
cout<<ans;
return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步