hdu1158 Employment Planning
来源:互联网 发布:怎么在淘宝买发票 编辑:程序博客网 时间:2024/06/04 18:33
DP[I][J] 表示第i个月j个人的花费。由题目可以得到n个月需要人数最多的那个月人数为多少。枚举每个月最少需要多少人 到 最多的人数。感觉有点像背包,第一个月比较特殊,只能雇佣人。处理出来第一个月j个人所需要的花费。从第二个月开始枚举
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define INF 99999999int const MAXN = 110;int dp[MAXN][MAXN],num[MAXN];inline int Min(int a,int b){ return a<b?a:b;}inline int Max(int a,int b){ return a>b?a:b;}int main(){ int n; while(~scanf("%d",&n),n){ int a,b,c; scanf("%d%d%d",&a,&b,&c); int m = 0; for(int i = 1;i <= n;i++){ scanf("%d",&num[i]); m = Max(num[i],m); } for(int i = 1;i <= m;i++){ dp[1][i] = (a + b) * i; } for(int i = 2;i <= n;i++){ for(int j = num[i];j <= m;j++){ int sum = INF; for(int k = num[i - 1];k <= m;k++){ int s; if(k > j) s = dp[i - 1][k] + (k - j) * c + b * j; else s = dp[i - 1][k] + (j - k) * a + b * j; sum = Min(s,sum); } dp[i][j] = sum; } } int sum = INF; for(int i = num[n];i <= m;i++){ sum = Min(sum,dp[n][i]); } printf("%d\n",sum); } return 0;}
0 0
- hdu1158 Employment Planning
- HDU1158 Employment Planning
- HDU1158 Employment Planning
- HDU1158:Employment Planning(DP)
- hdu1158 Employment Planning
- HDU1158 Employment Planning
- hdu1158 Employment Planning 【dp】
- hdu1158 Employment Planning
- hdu1158 Employment Planning
- HDU1158 Employment Planning(DP)
- hdu1158——Employment Planning
- HDU1158-Employment Planning(dp)
- hdu1158 Employment Planning【贪心&dp】
- hdu1158 Employment Planning(动态规划)
- hdu1158 Employment Planning(普通DP)
- HDU_1158 Employment Planning
- hdu Employment Planning (dp)
- C基础/Employment Planning
- 多线程中的确保子线程退出之后 主线程退出
- java应用连接oracle 11g R2 rac (用scanip连接报错)
- Android开发工具类大集合(六)
- android 屏幕相关总结
- 005
- hdu1158 Employment Planning
- 京东、易迅和新蛋:3位昔日电商"小伙伴"的那些年
- 可访问的google网址
- 如果在appendChild添加动画
- 从零开始学android<FrameLayout帧布局.十四.>
- Cocos2d-x—使用TexturePacker对图片进行打包、加密
- CF感悟
- web.xml配置详解
- Android开发工具类大集合(八)