【HDU 1158】 Employment Plannin

来源:互联网 发布:js实现动态时钟 编辑:程序博客网 时间:2024/06/10 22:39

题目大意:你可以雇佣,开除雇员,当然你得支付给任何一个在职雇员薪水,就算他不工作。请告诉我要完成工作,最少的花费是多少。


#include<iostream>using namespace std;int dp[15][1100];int a[13];int main(){int n;int hire,cost,fire;while(cin>>n,n){cin>>hire>>cost>>fire;int max=0;for(int i=1;i<=n;i++){cin>>a[i];if(max<a[i])max=a[i];}for(int i=a[1];i<=max;i++)dp[1][i]=i*(hire+cost);int min=1000000;for(int i=2;i<=n;i++)for(int j=a[i];j<=max;j++){min=0x7fffffff;//最大值int temp;for(int k=a[i-1];k<=max;k++){if(j<k)temp=j*cost+(k-j)*fire+dp[i-1][k];elsetemp=j*cost+(j-k)*hire+dp[i-1][k];if(min>temp)min=temp;}dp[i][j]=min;}min=0x7fffffff;for(int i=a[n];i<=max;i++)if(min>dp[n][i])min=dp[n][i];cout<<min<<endl;}}


0 0
原创粉丝点击