Time Limit: 1 second

Memory Limit: 32 MB

【问题描述】

一位管理项目的经理想要确定每个月需要的工人,他知道每月所需的最少工人数。当他雇佣或解雇一个工人时,会有一些额外支出。一旦一个工人被雇佣,即使他不工作,他也将得到工资。这位经理知道雇佣一个工人的费用,解雇一个工人的费用和一个工人的工资。现他在考虑一个问题:为了把项目的费用控制在最低,他将每月雇佣或解雇多少个工人。

【输入格式】

共三行。第一行为月数n(不超过12)。第二行含雇佣一个工人的费用、一个工人的工资和解雇一个工人的费用(≤100)。第三行含n个数,分别表示每月最少需要的工人数(≤1000)。每个数据之间有一个空格隔开。

【输出格式】

仅一行,表示项目的最小总费用。

【输入样例】

3
4 5 6
10 9 11

【输出样例】

199

【题目链接】:http://noi.qz5z.com/viewtask.asp?id=a601

【题意】

【题解】

/*
设f[i][j]表示第i个月有j个工人的最小花费;
memset(f,255,sizeof f);
f[1][mi[1]] = h*mi[1]+mi[1]*s;
rep1(i,1,n-1)
rep1(j,mi[i],1000)
if (f[i][j]!=-1)
{
if (j<=mi[i+1])
{
if (f[i+1][mi[i+1]]==-1)
f[i+1][mi[i+1]] = f[i][j]+(mi[i+1]-j)*h+mi[i+1]*s;
else
f[i+1][mi[i+1]] = min(f[i+1][mi[i+1]],f[i][j]+(mi[i+1]-j)*h+mi[i+1]*s);
}
else
{
//j>mi[i+1];
rep1(k,mi[i+1],j)
{
if (f[i+1][k] ==-1)
f[i+1][k] = f[i][j]+f*(j-k)+k*s;
else
f[i+1][k] = min(f[i+1][k],f[i][j]+f*(j-k)+k*s);
}
}
}
最后在f[n][mi[n]..1000]里面找答案;
*/

【完整代码】

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define rei(x) scanf("%d",&x)
#define rel(x) scanf("%lld",&x) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 15; int n,h,s,f;
int mi[N],dp[N][2000]; int main()
{
//freopen("F:\\rush.txt","r",stdin);
rei(n);
rei(h),rei(s),rei(f);
rep1(i,1,n)
rei(mi[i]);
memset(dp,255,sizeof dp);
dp[1][mi[1]] = h*mi[1]+mi[1]*s;
rep1(i,1,n-1)
rep1(j,mi[i],1000)
if (dp[i][j]!=-1)
{
if (j<=mi[i+1])
{
if (dp[i+1][mi[i+1]]==-1)
dp[i+1][mi[i+1]] = dp[i][j]+(mi[i+1]-j)*h+mi[i+1]*s;
else
dp[i+1][mi[i+1]] = min(dp[i+1][mi[i+1]],dp[i][j]+(mi[i+1]-j)*h+mi[i+1]*s);
}
else
{
//j>mi[i+1];
rep1(k,mi[i+1],j)
{
if (dp[i+1][k] ==-1)
dp[i+1][k] = dp[i][j]+f*(j-k)+k*s;
else
dp[i+1][k] = min(dp[i+1][k],dp[i][j]+f*(j-k)+k*s);
}
}
}
int ans = 0x3f3f3f3f;
rep1(i,mi[n],1000)
if (dp[n][i]!=-1)
ans = min(ans,dp[n][i]);
printf("%d\n",ans);
return 0;
}

【a601】雇佣计划的更多相关文章

  1. [LOJ#2732] 「JOISC 2016 Day 2」雇佣计划

    参考博文 (不过个人感觉我讲的稍微更清楚一点) 题目就是让我们求图中满足数值大于等于B的连通块数量 然后我们可以尝试转换为求连通块两端所产生的“谷”的数量,显然一个连通块对谷可以贡献2的答案,最终答案 ...

  2. BZOJ2039 [2009国家集训队]employ人员雇佣

    AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=2039 鉴于一开始看题如果不仔细是看不懂题目的,还是说一下题目大意 [题目大意]:给定n个人 ...

  3. 【声明】前方不设坑位,不收费!~ 我为NET狂官方学习计划

    发个通知,过段时间学习计划相关的东西就出来了,上次写了篇指引文章后有些好奇心颇重的人跟我说:“发现最近群知识库和技能库更新的频率有点大,这是要放大招的节奏啊!” 很多想学习却不知道如何规划的人想要一个 ...

  4. SQL Server-聚焦查询计划Stream Aggregate VS Hash Match Aggregate(二十)

    前言 之前系列中在查询计划中一直出现Stream Aggregate,当时也只是做了基本了解,对于查询计划中出现的操作,我们都需要去详细研究下,只有这样才能对查询计划执行的每一步操作都了如指掌,所以才 ...

  5. ORACLE从共享池删除指定SQL的执行计划

    Oracle 11g在DBMS_SHARED_POOL包中引入了一个名为PURGE的新存储过程,用于从对象库缓存中刷新特定对象,例如游标,包,序列,触发器等.也就是说可以删除.清理特定SQL的执行计划 ...

  6. 解析大型.NET ERP系统核心组件 查询设计器 报表设计器 窗体设计器 工作流设计器 任务计划设计器

    企业管理软件包含一些公共的组件,这些基础的组件在每个新项目立项阶段就必须考虑.核心的稳定不变功能,方便系统开发与维护,也为系统二次开发提供了诸多便利.比如通用权限管理系统,通用附件管理,通用查询等组件 ...

  7. MSSQLSERVER执行计划详解

    序言 本篇主要目的有二: 1.看懂t-sql的执行计划,明白执行计划中的一些常识. 2.能够分析执行计划,找到优化sql性能的思路或方案. 如果你对sql查询优化的理解或常识不是很深入,那么推荐几骗博 ...

  8. SQL Server-聚焦使用索引和查询执行计划(五)

    前言 上一篇我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解,Always to review the ...

  9. SQL Tuning 基础概述03 - 使用sql_trace和10046事件跟踪执行计划

    1.使用sql_trace跟踪执行计划 1.1 当前session跟踪: alter session set sql_trace = true; //开始sql_trace alter session ...

随机推荐

  1. [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''&lt;h1 style=&quot;text-align: center;&quot;&gt;php

    [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL s ...

  2. amazeui学习笔记--css(布局相关3)--辅助类Utility

    amazeui学习笔记--css(布局相关3)--辅助类Utility 一.总结 1.元素清除浮动: 添加 am-cf 这个 class 即可 2.水平滚动: .am-scrollable-horiz ...

  3. LM4990音频功放芯片

    我们选用的一种封装:我们用的是DGK封装. 典型电路图: 下面是示意图:四中封装的示意图是不一样的: 下面是真正的原理图: 高放大倍数的原理图: 查分式的: 单个输入的原理图: 下面是有关电源的选择:

  4. 微信小程序踩坑- tabBar.list[3].selectedIconPath 大小超过 40kb

    重新启动微信小程序编辑器的时候遇到了这样的一个问题: tabBar.list[3].selectedIconPath 大小超过 40kb 微信小程序开发的过程之中总会出现这样或者那样的错误,需要我们耐 ...

  5. [Vue] Load components when needed with Vue async components

    In large applications, dividing the application into smaller chunks is often times necessary. In thi ...

  6. OC的DES加密,使与java的Cipher类用DES/CBC/PKCS5Padding方式的加密结果同样

    问题说明: 近期用到DES加密,而且要与java的Cipher类加密的结果保持一致.没研究过java的Cliper,但工作中Cipher依据DES/CBC/PKCS5Padding加密方式生成了一个字 ...

  7. LA 3026 - Period KMP

    看题传送门:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...

  8. POJ 2362 Square DFS

    传送门:http://poj.org/problem?id=2362 题目大意: 给一些不同长度的棍棒,问是否可能组成正方形. 学习了写得很好的dfs 赶紧去玩博饼了.....晚上三个地方有约.... ...

  9. POJ 2479 Maximum sum POJ 2593 Max Sequence

    d(A) = max{sum(a[s1]..a[t1]) + sum(a[s2]..a[t2]) | 1<=s1<=t1<s2<=t2<=n} 即求两个子序列和的和的最大 ...

  10. 基于mpvue的小程序项目搭建的步骤一

    未标题-1.png mpvue 是美团开源的一套语法与vue.js一致的.快速开发小程序的前端框架,按官网说可以达到小程序与H5界面使用一套代码.使用此框架,开发者将得到完整的 Vue.js 开发体验 ...