hdu 1158 Employment Planning(DP)
题意:
有一个工程需要N个月才能完成。(n<=12)
给出雇佣一个工人的费用、每个工人每个月的工资、解雇一个工人的费用。
然后给出N个月所需的最少工人人数。
问完成这个项目最少需要花多少钱。
思路:
将(i,num):【第i个月拥有num个工人 】看成一个状态。那么就想到用DP。
看代码
代码:
struct node{
int minNum, maxNum;
}
month[15];
int n;
int hire,salary,fire;
int dp[15][505];
int main(){
int n;
while(scanf("%d",&n),n){
scanf("%d%d%d",&hire,&salary,&fire);
int maxs=-1;
rep(i,1,n){
scanf("%d",&month[i].minNum);
maxs=max( maxs,month[i].minNum);
}
rep(i,1,n){
month[i].maxNum=maxs;
}
mem(dp,inf);
rep(i,month[1].minNum,month[1].maxNum){
dp[1][i]=i*(hire+salary);
}
rep(i,2,n){
rep(j,month[i].minNum,month[i].maxNum){ //这个月招人数
rep(k,month[i-1].minNum,month[i-1].maxNum){ //上个月招人数
int dd;
if(j>k){
dd=(j-k)*hire;
}else{
dd=(k-j)*fire;
}
dp[i][j]=min( dp[i][j],dp[i-1][k]+salary*j+dd );
}
}
}
int ans=inf;
rep(i,month[n].minNum,month[n].maxNum){
ans=min( ans,dp[n][i] );
}
printf("%d\n",ans);
}
return 0;
}
hdu 1158 Employment Planning(DP)的更多相关文章
- HDU 1158 Employment Planning (DP)
题目链接 题意 : n个月,每个月都至少需要mon[i]个人来工作,然后每次雇佣工人需要给一部分钱,每个人每个月还要给工资,如果解雇人还需要给一笔钱,所以问你主管应该怎么雇佣或解雇工人才能使总花销最小 ...
- hdu1158 Employment Planning(dp)
题目传送门 Employment Planning Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- HDU 1158 Employment Planning【DP】
题意:给出n个月,雇佣一个人所需的钱hire,一个人工作一个月所需要的钱salary,解雇一个人所需要的钱fire,再给出这n个月每月1至少有num[i]个人完成工作,问完成整个工作所花费的最少的钱是 ...
- HDU 4049 Tourism Planning(动态规划)
Tourism Planning Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 5791:Two(DP)
http://acm.hdu.edu.cn/showproblem.php?pid=5791 Two Problem Description Alice gets two sequences A ...
- HDU 4833 Best Financing(DP)(2014年百度之星程序设计大赛 - 初赛(第二轮))
Problem Description 小A想通过合理投资银行理财产品达到收益最大化.已知小A在未来一段时间中的收入情况,描述为两个长度为n的整数数组dates和earnings,表示在第dates[ ...
- Hdu 1158 Employment Planning(DP)
Problem地址:http://acm.hdu.edu.cn/showproblem.php?pid=1158 一道dp题,或许是我对dp的理解的还不够,看了题解才做出来,要加油了. 只能先上代码了 ...
- HDU 4833 Best Financing (DP)
Best Financing Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 1158 Employment Planning
又一次看题解. 万事开头难,我想DP也是这样的. 呵呵,不过还是有进步的. 比如说我一开始也是打算用dp[i][j]表示第i个月份雇j个员工的最低花费,不过后面的思路就完全错了.. 不过这里还有个问题 ...
随机推荐
- CodeForce-785B Anton and Classes(简单贪心)
Anton and Classes Anton likes to play chess. Also he likes to do programming. No wonder that he deci ...
- 关于 CLAHE 的理解及实现
CLAHE CLAHE 是一种非常有效的直方图均衡算法, 目前网上已经有很多文章进行了说明, 这里说一下自己的理解. CLAHE是怎么来的 直方图均衡是一种简单快速的图像增强方法, 其原理和实现过程以 ...
- mybatis一对多联表查询的两种常见方式
1.嵌套结果查询(部分代码如下) sql语句接上: 注释:class表(c别名),student表teacher(t别名)teacher_id为class表的字段t_id为teacher表的字段,因为 ...
- linux停止进程
$ kill -QUIT 主进程号 例如:kill -QUIT 1708 这种方式相对来说会有一个停止的过程,先将子进程停止掉,然后再停掉主进程. 快速停止Nginx: $ kill -TERM 主进 ...
- Java基础系列(30)- 命令行传参
命令行传参 有时候你希望运行一个程序的时候再传递给它消息.这就要靠传递命令行参数main()函数实现 package method; public class CommandLine { public ...
- 如何在Ubuntu 18.04安装Git
在Ubuntu 18.04安装Git 更新apt包列表 apt-get update -y apt-get upgrade -y 安装Git: apt install git 检查Git版本 git ...
- 如何使用jemeter进行性能测试
下载链接:http://jmeter.apache.org/download_jmeter.cgi 一:如何使用jemeter进行压测 1)稳定性测试就需要长时间运行,其运行时间1天.2天.一周等 2 ...
- vue-cli3 取消eslint 校验代码
项目生成后会有个.eslintrc.js文件 module.exports = { root: true, env: { node: true }, 'extends': [ 'plugin:vue/ ...
- 测试用例 setup 和 和 teardown
前言 学过unittest的都知道里面用前置和后置setup呾teardown非常好用,在每次用例开始前呾结束后都去执行一次.当然迓有更高级一点的 setupClass 呾 teardownClass ...
- Ubuntu安装Oracleclient远程连接数据库
平时Oracle数据库都安装在本地或者WindowsServer上进行使用,但因为工作需要,领导要求在虚拟机中安装Ubuntu来连接Windows本地安装的数据库,先将操作过程和遇到的问题进行梳理总结 ...