HDU 1158(非常好的锻炼DP思维的题目,非常经典)
题目链接:
acm.hdu.edu.cn/showproblem.php?pid=1158
Employment Planning
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 6020 Accepted Submission(s): 2609
- #include<bits/stdc++.h>
- using namespace std;
- #define inf 9999999
- int dp[][];
- int a[];
- int hire,salary,fire;
- int main()
- {
- int n;
- while(~scanf("%d",&n))
- {
- if(n==)
- break;
- scanf("%d %d %d",&hire,&salary,&fire);
- int max_people=-inf,min_people=inf;
- for(int i=; i<=n; i++)
- {
- scanf("%d",&a[i]);
- max_people=max(max_people,a[i]);
- min_people=min(min_people,a[i]);
- }
- //dp[i][j] 在第i个月的时候,雇佣j个人的总费用(雇佣费+工资)
- //dp初始化
- memset(dp,0x3f,sizeof(dp));//无穷大
- for(int j=min_people; j<=max_people; j++)
- {
- dp[][j]=hire*j+salary*j;
- }
- for(int i=; i<=n; i++)
- {
- for(int j=a[i]; j<=max_people; j++)
- {
- int t=inf;
- for(int k=a[i-]; k<=max_people; k++)
- {
- int v=hire;
- if(k-j>)//解雇
- {
- v=fire;
- }
- int x=dp[i-][k]+abs(k-j)*v+j*salary;
- t=min(t,x);
- }
- dp[i][j]=t;
- }
- }
- int t=inf;
- for(int j=; j<=max_people; j++)
- {
- t=min(t,dp[n][j]);
- }
- printf("%d\n",t);
- }
- }
ojbk,溜了溜了,吃饭去
HDU 1158(非常好的锻炼DP思维的题目,非常经典)的更多相关文章
- HDU 1158 Employment Planning (DP)
题目链接 题意 : n个月,每个月都至少需要mon[i]个人来工作,然后每次雇佣工人需要给一部分钱,每个人每个月还要给工资,如果解雇人还需要给一笔钱,所以问你主管应该怎么雇佣或解雇工人才能使总花销最小 ...
- hdu 1158 dp Employment Planning
Employment Planning Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- HDU 1024 Max Sum Plus Plus --- dp+滚动数组
HDU 1024 题目大意:给定m和n以及n个数,求n个数的m个连续子系列的最大值,要求子序列不想交. 解题思路:<1>动态规划,定义状态dp[i][j]表示序列前j个数的i段子序列的值, ...
- HDU 1231 最大连续子序列 --- 入门DP
HDU 1231 题目大意以及解题思路见: HDU 1003题解,此题和HDU 1003只是记录的信息不同,处理完全相同. /* HDU 1231 最大连续子序列 --- 入门DP */ #inclu ...
- hdu 4778 Gems Fight! 博弈+状态dp+搜索
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4102743.html 题目链接:hdu 4778 Gems Fight! 博弈+状态dp+搜 ...
- hdu 4514 并查集+树形dp
湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- hdu 3247 AC自动+状压dp+bfs处理
Resource Archiver Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 100000/100000 K (Java/Ot ...
- hdu 2825 aC自动机+状压dp
Wireless Password Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- hdu 3433 A Task Process 二分+dp
A Task Process Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
随机推荐
- 使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0
使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0 网上的 MapReduce WordCount 教程对于如何编译 WordCount.java 几乎是一笔带过… 而有写到的 ...
- spss C# 二次开发 学习笔记(二)——Spss以及统计术语解释(IT人眼中的统计术语)
针对客户需求,需要对一些数据做统计分析.统计分析的第一步,即为数据查询,查找出要统计分析的数据. 查询得出的是一个行列表格的结果集,行.列.表格等这些IT的数据库概念和Spss以及统计中的术语是如何对 ...
- CF235C Cyclical Quest
题意 给定一个长度为\(n\)的母串 \(q\)组询问 这个串可以旋转(就是把最后一位丢到最前面这样子) 问这个串以及其旋转的串在给定的串中出现了多少次 Sol 旋转就把它复制一遍接在后面 然后就在\ ...
- drupal7 获取网站名称
$site_name=variable_get('site_name', 'Drupal');
- centos配置网络
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE="eth0"BOOTPROTO=&qu ...
- HTML 的特殊字符转换转义符,的两种方法。
HTML 的特殊字符转换转义符,的两种方法. 方法一: function htmlEscape(str) { return String(str) .replace(/&/g, '&' ...
- Software Testing Techniques LAB 02: Selenium
1. Installing 1. Install firefox 38.5.1 2. Install SeleniumIDE After installing, I set the view o ...
- Windows Azure系列公开课 - 第一课:认识云计算
我们正在经历着一个前所未有的变革时代.信息技术的不断创新也推动着各行业的业务创新. 任何规模和类型的组织都需要拥抱最新的IT趋势才能保持竞争力与创新力,并关注自身的业务. 云计算的最终目标是将计算.服 ...
- 基于bootstrap模态框的alert弹窗
完成的效果如下: html代码: <!-- 弹出框 --> <div class="modal fade" id="alert_like" t ...
- SQL点点滴滴_判断字段或者字符中是否包含有特殊字符
SQL Server中,如果我们想判断一个字符串或者数据字段中是否包含有特殊字符.可以使用正则来实现.除了大小字母和数字之外全是特殊字符[^a-zA-Z0-9]