#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1000005
#define INF 0x7fffffff
using namespace std;
int a[22],dp[22][22222];
int main()
{
int n,h,s,f;
while(scanf("%d",&n)!=EOF)
{
if(!n) break;
scanf("%d%d%d",&h,&s,&f);
int maxp=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
maxp=max(maxp,a[i]);
}
if(maxp==0)
{
printf("0\n");
continue;
}
for(int i=a[1];i<=maxp;i++)
{
dp[1][i]=h*i+s*i;
}
int ans=INF;
for(int i=2;i<=n;i++)
{
for(int j=a[i];j<=maxp;j++)
{
dp[i][j]=INF;
for(int k=a[i-1];k<=maxp;k++)
{
if(k<=j)
{
dp[i][j]=min(dp[i-1][k]+(j-k)*h+j*s,dp[i][j]);
}
else
{
dp[i][j]=min(dp[i-1][k]+(k-j)*f+j*s,dp[i][j]);
}
}
// if(i==n) 放到里面就是wa,搞不懂
// {
// ans=min(ans,dp[i][j]);
// }
}
}
for(int i=a[n];i<=maxp;i++)
{
ans=min(ans,dp[n][i]);
}
printf("%d\n",ans);
}
return 0;
}
hdu1158
最新推荐文章于 2020-05-16 00:00:08 发布