/* ***********************************************
Author :PeterBishop
Created Time :2019年04月14日 星期日 10时02分46秒
File Name :t.cpp
************************************************ */
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <stack>
#include <string>
/*
dp[i][j]记录取i-j能获得的最大价值
从取最后一个开始想,取最后一个i是a[i]*n, 上次取得就是dp[i-1][i]或dp[i][i+1]
状态转移方程:dp[i][j] = max(dp[i+1][j]+(n-k)*a[i], dp[i][j-1]+(n-k)*a[j]), (k是ij区间长度)
*/
using namespace std;
const int maxn = 2005;
int a[maxn], dp[maxn][maxn];
int main()
{
freopen("in.txt","r",stdin);
int n;
while(cin>>n){
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++){
cin>>a[i];
dp[i][i]=n*a[i];
}
for(int l=1;l<n;l++){
for(int i=1;i+l<=n;i++){
int j=i+l;
dp[i][j]=max(dp[i+1][j]+(n-l)*a[i],dp[i][j-1]+(n-l)*a[j]);
}
}
cout<<dp[1][n]<<endl;
}
return 0;
}
3186 简单区间dp
原创PeterBishop ©著作权
©著作权归作者所有:来自51CTO博客作者PeterBishop的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
POJ 3186 Treats for the Cows——区间DP
#i
dp #include i++ -
poj 3280(简单区间dp)
题意:将一个字符串转换成回文串
dp i++ #include 回文串