题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1158

分析:dp[i][j]表示第i个月用j个人需要花费的最少费用;

则状态转移方程为:dp[i][j]=min(dp[i-1][k]+j*b+(j>k?(j-k)*a:(k-j)*c),dp[i][j]);(m[i-1]<=k<=sum)

这个状态方程不难,只需要根据第i个月比第i-1个月的人数增减来改变一下就好。

这里sum为12个月最大值就可以了,刚开sum表示m总和,TLE到泪奔。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstdlib>
#include <vector>
#include <set>
#include <map>
#define LL long long
#define mod 1000000007
#define inf 1<<30
#define N 100010
using namespace std;
int dp[][],m[];
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
int sum=;
for(int i=;i<=n;i++)scanf("%d",&m[i]),sum=max(m[i],sum);
memset(dp,0x3f,sizeof(dp));
dp[][m[]]=m[]*(a+b);
for(int i=;i<=n;i++)
{
for(int j=m[i];j<=sum;j++)
{
for(int k=m[i-];k<=sum;k++)
dp[i][j]=min(dp[i-][k]+j*b+(j>k?(j-k)*a:(k-j)*c),dp[i][j]);
}
}
int ans=;
for(int i=m[n];i<=sum;i++)ans=min(ans,dp[n][i]);
printf("%d\n",ans);
}
}

最新文章

  1. “(null)” is of a model that is not supported by this version of Xcode. Please use a different device.
  2. git版本控制管理实践-2
  3. https基础流程
  4. 使用mxmlc在命令行编译.as代码
  5. js中的回调函数的理解和使用方法
  6. 借助 MySQLTuner 优化 MySQL 性能(转载的一篇文章)
  7. LoadRunner ---思考时间设置
  8. 1. Programming in C is fun!
  9. 【转】gcc中-pthread和-lpthread的区别
  10. Java API ——Object类
  11. android126 zhihuibeijing 极光推送
  12. STSdb
  13. 【转】Mysql三种备份详解
  14. C# 创建Windows服务。服务功能:定时操作数据库 (转)
  15. [LeetCode] Longest Uncommon Subsequence II 最长非共同子序列之二
  16. Windows 下使用 工具修改文件的 时间
  17. opencontrail—VXLAN模式下数据包的传输过程
  18. react-native添加react-native-vector-icons插件android遇到的问题
  19. css过渡
  20. mysql的基础增删改查(一)

热门文章

  1. Linq To sql入门练习 Lambda表达式基础
  2. ASP.NET - 后台获取按钮绑定的值CommandArgument
  3. Ubuntu环境下SSH的安装及使用
  4. Godiva_百度百科
  5. hdu4722 Good Numbers
  6. UVA 10160 Servicing Stations(深搜 + 剪枝)
  7. POJ 2175 spfa费用流消圈
  8. JSP的学习(5)——语法知识三之include指令
  9. Opencv实现图像的灰度处理,二值化,阀值选择
  10. 关于iOS7以后版本号企业公布问题