HDU1158:Employment Planning(线性dp)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1158
这题又是看了题解,题意是一项工作需要n个月完成,雇佣一个人需要m1的钱,一个人的月工资为sa,辞退一个人需要花费m2的钱,然后给出n的数字,
代表每月需要的最少员工,问如何进行人员调整使最终花费的钱最少。
我已开始就推错了状态转移方程,因为给出的是最少的员工,所以要从当前最少员工~最多员工枚举。
还有每次需要比较num[i-1]与num[i]的大小,具体实现请看代码。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define inf 0x3f3f3f3f
using namespace std;
int n,dp[13][110];
int m1,sa,m2,num[13],maxx;
int main()
{
while(scanf("%d",&n)!=EOF&&n!=0)
{
scanf("%d%d%d",&m1,&sa,&m2);
maxx=-inf;
for(int i=1; i<=n; i++)
{
scanf("%d",&num[i]);
maxx=max(maxx,num[i]);
}
for(int i=0;i<=n;i++)
{
for(int j=0;j<=maxx;j++)
dp[i][j]=inf;
}
for(int i=1;i<=maxx;i++)
{
dp[1][i]=i*m1+i*sa;
//printf("dp[1][%d]==%d\n",i,dp[1][i]);
}
for(int i=2;i<=n;i++)
{
for(int j=num[i];j<=maxx;j++)
{
for(int k=num[i-1];k<=maxx;k++)
{
if(k>=j)
dp[i][j]=min(dp[i][j],dp[i-1][k]+(k-j)*m2+j*sa);
else
dp[i][j]=min(dp[i][j],dp[i-1][k]+(j-k)*m1+j*sa);
}
//printf("dp[%d][%d]==%d\n",i,j,dp[i][j]);
} }
int minx=inf;
for(int i=num[n];i<=maxx;i++)
minx=min(minx,dp[n][i]);
printf("%d\n",minx);
}
return 0;
}
HDU1158:Employment Planning(线性dp)的更多相关文章
- hdu1158 Employment Planning(dp)
题目传送门 Employment Planning Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- hdu1158 Employment Planning 2016-09-11 15:14 33人阅读 评论(0) 收藏
Employment Planning Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- HDU 1158 Employment Planning【DP】
题意:给出n个月,雇佣一个人所需的钱hire,一个人工作一个月所需要的钱salary,解雇一个人所需要的钱fire,再给出这n个月每月1至少有num[i]个人完成工作,问完成整个工作所花费的最少的钱是 ...
- HDU 1158 Employment Planning (DP)
题目链接 题意 : n个月,每个月都至少需要mon[i]个人来工作,然后每次雇佣工人需要给一部分钱,每个人每个月还要给工资,如果解雇人还需要给一笔钱,所以问你主管应该怎么雇佣或解雇工人才能使总花销最小 ...
- hdu 1158 Employment Planning(DP)
题意: 有一个工程需要N个月才能完成.(n<=12) 给出雇佣一个工人的费用.每个工人每个月的工资.解雇一个工人的费用. 然后给出N个月所需的最少工人人数. 问完成这个项目最少需要花多少钱. 思 ...
- HDU1158:Employment Planning(暴力DP)
Employment Planning Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- Employment Planning[HDU1158]
Employment Planning Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- Employment Planning DP
Employment Planning Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- hdu 1158 dp Employment Planning
Employment Planning Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- Employment Planning
Employment Planning 有n个月,每个月有一个最小需要的工人数量\(a_i\),雇佣一个工人的费用为\(h\),开除一个工人的费用为\(f\),薪水为\(s\),询问满足这n个月正常工 ...
随机推荐
- UITextField/UITextView限制字数
一,UITextFild限制字数(三步) 1,给textfild添加响应事件,类型为:UIControlEventEditingChanged [self.nickNameFild addTarget ...
- android跨进程通信(IPC)——AIDL
转载请标明出处: http://blog.csdn.net/sinat_15877283/article/details/51026711: 本文出自: [温利东的博客] 近期在看 @任玉刚 大神编写 ...
- makefile的选项LDFLAGS和LIBS的区别
LDFLAGS是选项,LIBS是要链接的库.都是喂给ld的,只不过一个是告诉ld怎么吃,一个是告诉ld要吃什么. 网上不难搜索到上面这段话.不过“告诉ld怎么吃”是什么意思呢? 看看如下选项: LDF ...
- gitlab手残点错关闭注册No authentication methods configured on login page
Gitlab - 如何解決 "No authentication methods configured on login page" ? (gitlab version : 8.1 ...
- swt生成、jar可执行包生成.exe可执行文件(giter)
http://tomfish88.iteye.com/blog/1074786 —————————————————————————————————————————————————————————— 最 ...
- CSS样式呈现优先级
经常出现CSS样式不生效的问题. 比如我先对p{},然后在其中一个标签写了个.p_style{}怎么都不生效,于是想到了CSS的呈现优先级. 经过自己测试, 属性style="" ...
- Laravel5.1 模型 --多对多关系
多对多关系也是很常用的一种关系,比如一篇文章可以有多个标签,一个标签下也可以有多篇文章,这就是一个典型的多对多的关系. 1 实现多对多关系 多对多关系我们需要三张表,一张是文章另一张是标签,第三章表是 ...
- JavaScript------获取表单信息
<form name="fname"> <input type="text" name="user" /> < ...
- 分布式服务框架dubbo入门实例
dubbo是一个分布式的服务架构,可直接用于生产环境作为SOA服务框架. 官网首页:http://dubbo.io/ ,官方用户指南 http://dubbo.io/User+Guide-zh.htm ...
- delphi 快捷键的使用
CTRL+SPACE 代码补全,很好用的(先改了输入法热键)CTRL+SHIFT+C 编写申明或者补上函数CTRL+SHIFT+↑(↓) 在过程.函数.事件内部, 可跳跃到相应的过程.函数.事件的定义 ...