3 4 5 6 10 9 11 0
199#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; int dp[20][100000]; int main() { int h,s,f,n,a[20],maxn,i,j,l; while(~scanf("%d",&n),n) { maxn = 0; scanf("%d%d%d",&h,&s,&f); for(i = 0; i<n; i++) { scanf("%d",&a[i]); maxn = max(maxn,a[i]); } for(l = a[0]; l<=maxn; l++) dp[0][l] = l*(h+s); for(i = 1; i<n; i++) { for(l = a[i]; l<=maxn; l++) { if(l>a[i-1]) dp[i][l] = dp[i-1][a[i-1]]+l*s+(l-a[i-1])*h; else dp[i][l] = dp[i-1][a[i-1]]+l*s+(a[i-1]-l)*f; for(j = a[i-1]+1; j<=maxn; j++) { if(j>l) dp[i][l] = min(dp[i][l],dp[i-1][j]+l*s+(j-l)*f); else dp[i][l] = min(dp[i][l],dp[i-1][j]+l*s+(l-j)*h); } } } int ans = 1<<30; for(l = a[n-1]; l<=maxn; l++) ans = min(ans,dp[n-1][l]); printf("%d\n",ans); } return 0; }
HDU1158:Employment Planning(DP),布布扣,bubuko.com
HDU1158:Employment Planning(DP)
原文地址:http://blog.csdn.net/libin56842/article/details/38230901