HDU 1158 Employment Planning dp
来源:互联网 发布:黑莓9900软件下载 编辑:程序博客网 时间:2024/05/21 12:08
点击打开链接
///题意 n表示月数
每个月都要保证最少有num[i]个人存在并且雇佣一个人解雇一个人需要花钱,并且雇佣了之后还要每个月发工资给他们
求实现n个月的人员分配工作最少花费多少钱
思路:
状态表示: Dp[i][j]为前i个月的留j个人的最优解;Num[i]<=j<=Max{Num[i]};
j>Max{Num[i]}之后无意义,无谓的浪费 记Max_n=Max{Num[i]};
Dp[i-1]中的每一项都可能影响到Dp[i],即使Num[i-1]<<Num[i]
所以利用Dp[i-1]中的所有项去求Dp[i];
对于Num[i]<=k<=Max_n, 当k<j时, 招聘;
当k>j时, 解雇 然后求出最小值
Dp[i][j]=min{Dp[i-1][k…Max_n]+(招聘,解雇,工资);
#include<bits/stdc++.h>#define LL long long#define INF 0x3f3f3f3fusing namespace std;int dp[14][10000];int num[100];int hire,salary,fire;int main(){ int n; while(~scanf("%d",&n),n) { int Max_num=-1; scanf("%d%d%d",&hire,&salary,&fire); for(int i=1; i<=n; i++) { scanf("%d",&num[i]); Max_num=max(Max_num,num[i]); } memset(dp,0,sizeof(dp)); int ans=INF; for(int i=1; i<=n; i++) { for(int j=num[i]; j<=Max_num; j++) { if(i==1) { dp[i][j]=j*(hire+salary); } else { dp[i][j]=INF; for(int k=num[i-1]; k<=Max_num; k++) if(k>=j) dp[i][j]=min(dp[i-1][k]+fire*(k-j)+j*salary,dp[i][j]); else dp[i][j]=min(dp[i-1][k]+hire*(j-k)+j*salary,dp[i][j]); } } if(i==n) for(int k=num[i];k<=Max_num;k++) ans=min(dp[i][k],ans); } printf("%d\n",ans); } return 0;}
0 0
- hdu 1158 Employment Planning--DP
- hdu 1158 Employment Planning(DP)
- hdu 1158 Employment Planning(dp)
- hdu 1158 Employment Planning (dp)
- HDU 1158 Employment Planning (DP)
- 【DP】HDU-1158 Employment Planning
- hdu 1158 Employment Planning【dp】
- HDU 1158 Employment Planning dp
- HDU 1158 Employment Planning(dp)
- HDU 1158 Employment Planning DP .
- hdu Employment Planning (dp)
- hdu 1158 Employment Planning (DP)
- hdu 1158 (dp)Employment Planning
- (DP)HDU 1158 Employment Planning
- HDU 1158 Employment Planning (简单二维dp)
- hdu 1158 Employment Planning (dp)
- !HDU 1158 Employment Planning--DP--(二维)
- hdu 1158 Employment Planning
- 揭开runtime的神秘面纱
- 数组中出现次数超过一半的数字
- [疯狂Java]JDBC:加载数据库驱动、连接数据库
- 史上最牛android studio下载(更新)
- struts2采用convention-plugin实现零配置
- HDU 1158 Employment Planning dp
- OOD六大原则
- Linux 实现DHCP自动获取IP地址
- bootstrap3入门一(栅格系统)
- 弄明白Android 接口回调机制
- 实际参数列表和形式参数列表长度不同的问题
- nginx增加虚拟服务器
- 更改ubuntu对话框中的关闭最大化最小化按键放到对话框右侧
- 用 Github + Jekyll 写博客