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)的更多相关文章

  1. HDU 1158 Employment Planning (DP)

    题目链接 题意 : n个月,每个月都至少需要mon[i]个人来工作,然后每次雇佣工人需要给一部分钱,每个人每个月还要给工资,如果解雇人还需要给一笔钱,所以问你主管应该怎么雇佣或解雇工人才能使总花销最小 ...

  2. HDU 1158 Employment Planning【DP】

    题意:给出n个月,雇佣一个人所需的钱hire,一个人工作一个月所需要的钱salary,解雇一个人所需要的钱fire,再给出这n个月每月1至少有num[i]个人完成工作,问完成整个工作所花费的最少的钱是 ...

  3. hdu 1158 Employment Planning(DP)

    题意: 有一个工程需要N个月才能完成.(n<=12) 给出雇佣一个工人的费用.每个工人每个月的工资.解雇一个工人的费用. 然后给出N个月所需的最少工人人数. 问完成这个项目最少需要花多少钱. 思 ...

  4. HDU 1158 Employment Planning

    又一次看题解. 万事开头难,我想DP也是这样的. 呵呵,不过还是有进步的. 比如说我一开始也是打算用dp[i][j]表示第i个月份雇j个员工的最低花费,不过后面的思路就完全错了.. 不过这里还有个问题 ...

  5. Employment Planning DP

    Employment Planning Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  6. 【HDOJ】1158 Employment Planning

    简单DP. #include <cstdio> #include <cstring> #include <cstdlib> #include <climits ...

  7. HDU 1158(非常好的锻炼DP思维的题目,非常经典)

    题目链接: acm.hdu.edu.cn/showproblem.php?pid=1158 Employment Planning Time Limit: 2000/1000 MS (Java/Oth ...

  8. hdu 1158 dp Employment Planning

    Employment Planning Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  9. hdu1158 Employment Planning(dp)

    题目传送门 Employment Planning Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav ...

随机推荐

  1. Pain for friend

    For a guy who has experienced his fair share of mysteries,on mystery,I still can't figure out is why ...

  2. iOS圆盘转动引导图的简单实现

    最近更新的一批app,好多都采用了圆盘转动的效果,比如:百度音乐.当当,大概效果如下: 看看这个是怎么实现的吧. 一.视图元素布局 首先需要明确,这些视图元素是分布在一个圆周上的,通过滑动位置,以圆周 ...

  3. 大数据时代之hadoop(五):hadoop 分布式计算框架(MapReduce)

    大数据时代之hadoop(一):hadoop安装 大数据时代之hadoop(二):hadoop脚本解析 大数据时代之hadoop(三):hadoop数据流(生命周期) 大数据时代之hadoop(四): ...

  4. Linux常用命令总结——文件管理

    Linux中的目录 路径:也就是linux中的目录(文件夹)有绝对路径和相对路径 根目录:/ 用户主目录(home directory):位于/home目录下,用户登录时 工作目录(working d ...

  5. ajax不执行success回调而是执行了error回调

    最近在看jQuery的API文档,在使用到jQuery的ajax时,如果指定了dataType为json,老是不执行success回调,而是执行了error回调函数.   附上代码如下: JScrip ...

  6. Redis初始化配置及增删改查

    package com.calc.tools import redis.clients.jedis.JedisPool import redis.clients.jedis.Jedis import ...

  7. 一个分组查询 每组前 10 的sql 语句

    USE tmpgo CREATE TABLE Employee( ID int identity(1,1), EmpName varchar(20), EmpSalary varchar(10), E ...

  8. easyui好例子,值得借鉴

    http://www.cnblogs.com/wuhuacong/p/3317223.html

  9. HTML::Entities 编码或解码 HTML 实体的字符串

    <pre name="code" class="html"><pre name="code" class="py ...

  10. 玩转Linux网络namespace-单机自环測试与策略路由

    上周有厂商到公司測试,拿了一块据说非常猛的网络处理加速PCIe板卡,拎在手里沉甸甸的非常有分量,最让人意淫的是那4个万兆光口,于是我迫不及待的想要一览光口转发时那种看不见的震撼. 可是,仅凭4个光口怎 ...