首页 > 学院 > 开发设计 > 正文

P1063 能量项链(区间dp)

2019-11-10 18:40:14
字体:
来源:转载
供稿:网友

题见洛谷

#include<iostream>#include<cstdio>#include<cstring>#include<string> #include<algorithm>using namespace std;long long ans=0;int a[300],n,f[300][300];int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); a[i+n]=a[i];//复制为2倍长的线,化环为线,区间dp } for(int p=1;p<=n-1;p++) for(int i=1;i<=2*n-p;i++) { int j=i+p; for(int k=i;k<=j-1;k++) f[i][j]=max(f[i][j],f[i][k]+f[k+1][j]+a[i]*a[k+1]*a[j+1]); } int maxn=-10; for(int i=1;i<=n;i++) { if(f[i][i+n-1]>maxn) maxn=f[i][i+n-1]; } PRintf("%d",maxn); return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表