题意:

有一个工程需要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;
}

最新文章

  1. 建站随手记:about server stack
  2. MVC下分页的自定义分页一种实现
  3. Go语言练习:网络编程实例——简易图片上传网站
  4. WebApi 使用PUT和DELETE时报405的问题
  5. July 22nd, Week 30th Friday, 2016
  6. 安卓WebView中接口隐患与手机挂马利用(远程命令执行)
  7. 8款替代Dreamweaver的开源网页开发工具
  8. 第4章 管道与FIFO
  9. NoteExpress格式化复制指定输出样式
  10. Google Summer of Code 建议被接收的5个技巧
  11. Javascript设计模式之装饰者模式详解篇
  12. 部署MySQL自动化运维工具inception+archer
  13. MySQL篇,第三章:数据库知识3
  14. Docker容器技术的PaaS云平台架构设计***
  15. hdu4073 Lights
  16. struts2框架值栈的概述之问题一:什么是值栈?
  17. HTTP 协议中 Vary 的一些研究
  18. AOE网与关键路径简介
  19. 不要怂,就是GAN (生成式对抗网络) (三):判别器和生成器 TensorFlow Model
  20. c++ 判断是64还是32位系统

热门文章

  1. 最新版微软视窗(Windows)作业系统下载(2020-08-19)
  2. Django学习day02随堂笔记
  3. PHP的CLI命令行运行模式浅析
  4. I/O流中的字节流
  5. Elasticsearch2.4.6版本 在linux 命令行 对数据的增删改操作
  6. Faster RCNN 改进论文及资料
  7. php laravel v5.1 消息队列
  8. P4922-[MtOI2018]崩坏3?非酋之战!【dp】
  9. [源码解析] PyTorch 流水线并行实现 (5)--计算依赖
  10. 纯净Ubuntu16安装CUDA(9.1)和cuDNN