HDU 1158【简单dp】
题意:给你一个项目,需要几个月来完成买,同时也给你每个月最少需要的工人数。并且告诉你hiring,firing每个工人的钱数,以及每个月应付每个工人的工资。求项目完成时最小花费。
这是个简单dp,思路就是枚举一下上一个月和本月的工人数,写个状态转移方程即可。
#include<stdio.h>
#include<string.h>
#include<queue>
#include<iostream>
#define MAX 6000
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;int s, h, f;
int num[MAX];
int mon;
int dp[MAX][13];
int max(int a, int b) {return (a > b) ? a : b;
}int min(int a, int b) {return (a < b) ? a : b;
}
int main(void) {int maxx = 0;int ans = 0;while (~scanf("%d", &mon) && mon) {memset(dp, INF, sizeof(dp));ans = INF;scanf("%d%d%d", &h, &s, &f);for (int i = 1; i <= mon; i++) {scanf("%d", &num[i]);maxx = max(maxx, num[i]);}if (mon == 1) {ans = num[mon] * (h + s);printf("%d\n", ans);}else {for (int i = num[1]; i <= maxx; i++) {dp[i][1] = i * (h + s);}for (int i = 2; i <= mon; i++) {for (int j = num[i]; j <= maxx; j++) {for (int k = num[i - 1]; k <= maxx; k++) {if (j == k)dp[j][i] = min(dp[j][i - 1] + j * s, dp[j][i]);else if (j > k) {dp[j][i] = min(dp[k][i - 1] + (j - k)*(h + s) + k * s, dp[j][i]);}else {dp[j][i] = min(dp[k][i - 1] + f * (k - j) + s * j, dp[j][i]);}}}}for (int i = num[mon]; i <= maxx; i++) {ans = min(ans, dp[i][mon]);}printf("%d\n", ans);}}return 0;}
转载于:https://www.cnblogs.com/tennant/p/8986416.html
HDU 1158【简单dp】相关推荐
- hdu 5464(简单dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5464 解题思路: 由于p很小,而ai很大,所以先把ai%p,由于ai可能有负数,所以ai=(ai%p+ ...
- hdu 1208(简单dp)
题意:从[1,1]出发到[n,n],每次到达的格子都要按照格子里的数字走.问可以走到终点的数量是多少. 解题思路:简单的递推就可以了... #include<iostream> #incl ...
- hdu 1723(简单dp)
题意:从第1个人把信传到第n个人,每个人最多往后传m个人,问传到第n个人有多少种方案. 解题思路:水题,dp[i]表示传到第i个人有多少种方案,dp[i] += dp[k], i-m <= k ...
- HDU 5375 Gray code (简单dp)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5375 题面: Gray code Time Limit: 2000/1000 MS (Java/Ot ...
- hdu 2881(简单dp)
题意:n*n的矩阵,里面有m个格子是有任务要去完成的,t,x,y表示要在第t秒到达(x,y)的格子完成任务,问你最多可以完成多少 解题思路:简单dp,将时间排个序后就是LIS #include< ...
- hdu 3016 Man Down(简单线段树简单DP)
Man Down Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 4.15 每周作业 —— 简单DP
免费馅饼 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submissi ...
- Codeforces 41D Pawn 简单dp
题目链接:点击打开链接 给定n*m 的矩阵 常数k 以下一个n*m的矩阵,每一个位置由 0-9的一个整数表示 问: 从最后一行開始向上走到第一行使得路径上的和 % (k+1) == 0 每一个格子仅仅 ...
- HDU 1564 简单博弈 水
n*n棋盘,初始左上角有一个石头,每次放只能在相邻的四个位置之一,不能操作者输. 如果以初始石头编号为1作为后手,那么对于每次先手胜的情况其最后一步的四周的编号必定是奇数,且此时编号为偶数,而对于一个 ...
最新文章
- 【c语言】蓝桥杯算法提高 约数个数
- python哲学内容 多行胜于单行_Python3基础 __doc__ 单行与多行函数文档
- 基于消息队列 RocketMQ 的大型分布式应用上云实践
- c++ - 在终端中,cout不显示任何内容
- python将一个文件夹下图片到另外一个文件夹下
- 数据科学家最常用的十种算法和方法
- 信息展示类图表设计指南:10个必须遵循的步骤
- 校内胡策 T9270 mjt树
- 机器学习开篇之机器学习的分类
- 九死一生!阿里投资的Bigbasket,靠什么做到印度生鲜电商老大?
- bootstrap可视化布局(免费,自定义,方便下载)网页自定义,后台、前端页面自定义
- PCB设计基础及技巧
- 傅里叶逆变换程序matlab,按时间抽取基2-快速傅里叶逆变换算法_MATLAB代码
- 前端页面复制粘贴插件Clipboard的使用
- mysql笔试题一:查询where having 以及统计函数的使用
- matlab 工业相机 曝光时间_工业相机的曝光、曝光时间、快门、增益
- 服务器安装360文档卫士,360文档卫士的安装使用方法
- 步进电机正反转实验_只用一个接触器实现三相电机正反转
- webrtc入门:8.coturn流程
- 腾讯技术分享:微服务接口设计原则
热门文章
- iOS开发 IAP苹果内购
- 学以致用 知行合一 ——《产品管理与研发项目管理》课程有感
- OUTLOOK邮箱设置
- TypeError: 'str' object is not callable
- 蓝桥杯 ADV-154 算法提高 质数的后代
- 蓝桥杯 ADV-233 算法提高 队列操作
- 蓝桥杯 ADV-166 算法提高 聪明的美食家 java版
- L1-012. 计算指数-PAT团体程序设计天梯赛GPLT
- MESSAGE: [unixODBC][MySQL][ODBC 3.51 Driver]Can't connect to local MySQL server through socket '/tmp
- 数组的filter()方法