其他分享
首页 > 其他分享> > 2021ccpc黑龙江省赛dp题

2021ccpc黑龙江省赛dp题

作者:互联网

#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
using ll=long long ;
const int maxn=1e3+10;
int dp[maxn][maxn];
int sum[maxn][maxn];
int a[maxn];
int main()
{
    ios::sync_with_stdio(false);
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        sum[i][i]=a[i];
    }
    for(int len=1;len<=n;len++){
        for(int j=1;j+len<=n+1;j++){
            int ends=j+len-1;
            for(int i=j;i<ends;i++){
                dp[j][ends]=max(dp[j][ends],dp[j][i]+dp[i+1][ends]+(int)pow(abs(sum[j][i]-sum[i+1][ends]),2));
                sum[j][ends]=sum[j][i]*sum[i+1][ends];
            }
        }
    }
    cout<<dp[1][n];
}

 服了经典赛后过题!

标签:黑龙江省,int,long,2021ccpc,maxn,len,using,include,dp
来源: https://www.cnblogs.com/qq1415584788/p/14778164.html