hdu 1158 Employment Planning(DP)
2024-09-01 00:44:33
题意:
有一个工程需要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;
}
最新文章
- 建站随手记:about server stack
- MVC下分页的自定义分页一种实现
- Go语言练习:网络编程实例——简易图片上传网站
- WebApi 使用PUT和DELETE时报405的问题
- July 22nd, Week 30th Friday, 2016
- 安卓WebView中接口隐患与手机挂马利用(远程命令执行)
- 8款替代Dreamweaver的开源网页开发工具
- 第4章 管道与FIFO
- NoteExpress格式化复制指定输出样式
- Google Summer of Code 建议被接收的5个技巧
- Javascript设计模式之装饰者模式详解篇
- 部署MySQL自动化运维工具inception+archer
- MySQL篇,第三章:数据库知识3
- Docker容器技术的PaaS云平台架构设计***
- hdu4073 Lights
- struts2框架值栈的概述之问题一:什么是值栈?
- HTTP 协议中 Vary 的一些研究
- AOE网与关键路径简介
- 不要怂,就是GAN (生成式对抗网络) (三):判别器和生成器 TensorFlow Model
- c++ 判断是64还是32位系统
热门文章
- 最新版微软视窗(Windows)作业系统下载(2020-08-19)
- Django学习day02随堂笔记
- PHP的CLI命令行运行模式浅析
- I/O流中的字节流
- Elasticsearch2.4.6版本 在linux 命令行 对数据的增删改操作
- Faster RCNN 改进论文及资料
- php laravel v5.1 消息队列
- P4922-[MtOI2018]崩坏3?非酋之战!【dp】
- [源码解析] PyTorch 流水线并行实现 (5)--计算依赖
- 纯净Ubuntu16安装CUDA(9.1)和cuDNN