2858 Treats for the Cows
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int f[2005][2005];
int a[2005];
int main()
{
int n,l,i,j;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a[i];
f[i][i]=a[i]*n;
}
for(l=2;l<=n;l++)//枚举区间长度
{
for(i=1;(i+l-1)<=n;i++)//枚举起点
{
j=i+l-1;//枚举终点
dp[i][j]=max(dp[i+1][j]+a[i]*(n-l+1),dp[i][j-1]+a[j]*(n-l+1));//计算两个区间的零食
}
}
cout<<dp[1][n]<<endl;
return 0;
}
本文介绍了一种通过动态规划解决零食最优分配问题的方法。给定一组零食和奶牛数量,目标是最优地分配零食,使得每头奶牛获得的满意度最高。通过枚举区间长度和起点来更新状态,最终输出最大满意度。
177

被折叠的 条评论
为什么被折叠?



