Hdu 1158 Employment Planning(DP)
Problem地址:http://acm.hdu.edu.cn/showproblem.php?pid=1158
一道dp题,或许是我对dp的理解的还不够,看了题解才做出来,要加油了。
只能先上代码了。
#include <iostream>
#include <cstring>
#include <cstdio> using namespace std; const int MAXN = 100 + 28;
int dp[15][MAXN];
int workers[15]; inline int Min( int a, int b )
{
return a<b ? a : b;
} int main()
{
int N;
int hire, salary, fire;
int maxC;
int i, j, k;
int minC;
while( scanf("%d",&N)!=EOF && N )
{
scanf("%d%d%d", &hire, &salary, &fire);
maxC = -1;
for( i=1;i<=N;i++ )
{
scanf("%d",&workers[i]);
maxC = maxC<workers[i] ? workers[i] : maxC;
}
for( i=workers[1];i<=maxC;i++ )
dp[1][i] = hire*i + salary*i;
for( i=2;i<=N;i++ )
{
for( j=workers[i];j<=maxC;j++ )
{
// 前一个月的任何人数都可以引起下一个月部分人数对应的值的改变
minC = 65552365;
for( k=workers[i-1];k<=maxC;k++ )
{
if( j>k )
minC = Min( minC, dp[i-1][k]+(j-k)*hire+j*salary );
else if( k>=j )
minC = Min( minC, dp[i-1][k]+(k-j)*fire+j*salary );
}
dp[i][j] = minC;
}
}
minC = 65523365;
for( i=workers[N];i<=maxC;i++ )
minC = Min( minC, dp[N][i] );
printf("%d\n", minC);
}
return 0;
}
Hdu 1158 Employment Planning(DP)的更多相关文章
- HDU 1158 Employment Planning (DP)
题目链接 题意 : n个月,每个月都至少需要mon[i]个人来工作,然后每次雇佣工人需要给一部分钱,每个人每个月还要给工资,如果解雇人还需要给一笔钱,所以问你主管应该怎么雇佣或解雇工人才能使总花销最小 ...
- HDU 1158 Employment Planning【DP】
题意:给出n个月,雇佣一个人所需的钱hire,一个人工作一个月所需要的钱salary,解雇一个人所需要的钱fire,再给出这n个月每月1至少有num[i]个人完成工作,问完成整个工作所花费的最少的钱是 ...
- hdu 1158 Employment Planning(DP)
题意: 有一个工程需要N个月才能完成.(n<=12) 给出雇佣一个工人的费用.每个工人每个月的工资.解雇一个工人的费用. 然后给出N个月所需的最少工人人数. 问完成这个项目最少需要花多少钱. 思 ...
- HDU 1158 Employment Planning
又一次看题解. 万事开头难,我想DP也是这样的. 呵呵,不过还是有进步的. 比如说我一开始也是打算用dp[i][j]表示第i个月份雇j个员工的最低花费,不过后面的思路就完全错了.. 不过这里还有个问题 ...
- Employment Planning DP
Employment Planning Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- 【HDOJ】1158 Employment Planning
简单DP. #include <cstdio> #include <cstring> #include <cstdlib> #include <climits ...
- HDU 1158(非常好的锻炼DP思维的题目,非常经典)
题目链接: acm.hdu.edu.cn/showproblem.php?pid=1158 Employment Planning Time Limit: 2000/1000 MS (Java/Oth ...
- hdu 1158 dp Employment Planning
Employment Planning Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- hdu1158 Employment Planning(dp)
题目传送门 Employment Planning Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
随机推荐
- ISO/IEC14443和15693的对比有何具体区别
ISO14443 ISO14443A/B:超短距离智慧卡标准.这标准订出读取距离7-15厘米的短距离非接触智慧卡的功能及运作标准,使用的频率为13.56MHz. ISO14443定义了TYPE ...
- QT实现TCP通信服务器端和客户端(支持多个客户端)精简版
上星期接了个私活,工期两星期,报酬3000,写一个小软件,采集定向网络上的数据,并进行双向通信,捣鼓了两天,终于把QT中tcp通信这块调通了,找过N多例子,绝大部分都是基本的一个服务端一个客户端通信的 ...
- Nginx CORS实现JS跨域
1. 什么是跨域 简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象. 同源是指相同的协议.域名.端口.特别注意两点: 如果 ...
- 参照openRTSP写的一个RTSP client 加了一些注解
#include "liveMedia.hh" #include "BasicUsageEnvironment.hh" #include "Gro ...
- 用Visual C++设计“精灵”窗体
随着Microsoft凭借Windows在操作系统上取得的巨大成绩,Windows用户界面也日益成为业界标准.统一的界面给广大用户对应用软件的学习与使用带来了很大方便.但每天都面对同一副面孔,日久天长 ...
- BZOJ 1874 取石子游戏 (NIM游戏)
题解:简单的NIM游戏,直接计算SG函数,至于找先手策略则按字典序异或掉,去除石子后再异或判断,若可行则直接输出. #include <cstdio> const int N=1005; ...
- Android高斯模糊
传送门 github地址:http://developer.android.com/guide/topics/renderscript/compute.html: https://github.com ...
- guava中eventbus注解使用
guava是 google 几个java核心类库的集合,包括集合.缓存.原生类型.并发.常用注解.基本字符串操作和I/O等等.学会使用该库相关api的使用,能使我们代码更简洁,更优雅,本章节我们来谈谈 ...
- MongoDB shell常用命令
Shell操作数据库: 1. 超级用户相关: 1. #进入数据库admin use admin 2. #增加或修改用户密码 db.addUser('name','pwd') 3. #查看用户列表 d ...
- 字符通向字节流的桥梁---- OutputStreamWriter
OutputStream out = System.out; OutputStreamWriter osw = new OutputStreamWriter(out); BufferedWriter ...