HDU 4502 吉哥系列故事——临时工计划(一维动态规划)
题意:吉哥的假期是1到n天,然后有m个工作可以让吉哥选择做,每个工作都有一个开始 t_s 和结束的时间 t_e ,都用天来表示,然后每个工作必须从第一天做到最后一天,
从头到尾做完之后就可以得到C的报酬,现在要求吉哥这个假期最多能赚到多少钱?
解题报告:这个题就是一个典型的一维的动态规划,规划的公式是dp[i] = max(dp[i-(job[j].t_e-job[j].t_s+1)]+job[j].c,dp[i]);然后这题还有一个可以优化的地方,就是可
以将所有的工作先按照结束的时间从小到大排个序,这样的话,如果判断到循环到的那个工作的结束的时间比当前正在更新的时间晚的话,就可以退出这一层的循环,注意只是退
出一层循环,下面贴出优化前和优化后的两种不同代码以便于对比:
优化前代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; struct node
{
int t_s,t_e,c;
}job[];
int dp[];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,m;
scanf("%d%d",&n,&m);
for(int i = ;i < m;++i)
scanf("%d%d%d",&job[i].t_s,&job[i].t_e,&job[i].c);
memset(dp,,sizeof(dp));
int M = ;
for(int i = ;i <= n;++i)
for(int j = ;j < m;++j)
if(job[j].t_e == i)
{
dp[i] = max(dp[i-(job[j].t_e-job[j].t_s+)]+job[j].c,dp[i]);
M = max(M,dp[i]);
}
else dp[i] = max(dp[i],M);
printf("%d\n",dp[n]);
}
return ;
}
优化代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; struct node
{
int t_s,t_e,c;
friend bool operator < (node a,node b)
{
return a.t_e < b.t_e;
}
}job[];
int dp[];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,m;
scanf("%d%d",&n,&m);
for(int i = ;i < m;++i)
scanf("%d%d%d",&job[i].t_s,&job[i].t_e,&job[i].c);
sort(job,job+m); //优化前的准备工作
memset(dp,,sizeof(dp));
int M = ;
for(int i = ;i <= n;++i)
for(int j = ;j < m;++j)
{
if(job[j].t_e > i) //一个优化,当这个工作的时间比当前正在更新的时间晚的话,就可以退出这层的循环
break;
if(job[j].t_e == i)
{
dp[i] = max(dp[i-(job[j].t_e-job[j].t_s+)]+job[j].c,dp[i]);
M = max(M,dp[i]);
}
else dp[i] = max(dp[i],M);
}
printf("%d\n",dp[n]);
}
return ;
}
HDU 4502 吉哥系列故事——临时工计划(一维动态规划)的更多相关文章
- hdu 4502吉哥系列故事——临时工计划 (简单DP)
Problem Description 俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要压岁钱了,只 ...
- hdu 4502 吉哥系列故事——临时工计划_简单dp
题意: 俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要压岁钱了,只能把唯一的希望放到 ...
- hdu 4502 吉哥系列故事——临时工计划(dp)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4502 思路:一个简单的dp ,比赛时没做出来呢..... d[i]代表 到第i天时的最大值 #includ ...
- 吉哥系列故事——临时工计划(dp)
吉哥系列故事——临时工计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- HDUOJ----4502吉哥系列故事——临时工计划
吉哥系列故事——临时工计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- 吉哥系列故事――临时工计划(dp)
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Descr ...
- HDU4502吉哥系列故事——临时工计划
http://acm.hdu.edu.cn/showproblem.php?pid=4502 题意 :这个是中文题,我就不再详述了. 思路 : 以前做过一个活动区间选择,结果就按着那个思路敲了,后来发 ...
- HDU--杭电--4502--吉哥系列故事——临时工计划--背包--01背包
吉哥系列故事——临时工计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) To ...
- hdu 4512 吉哥系列故事——完美队形I【LCIS经典应用】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4512 http://acm.hust.edu.cn/vjudge/contest/view.action ...
随机推荐
- 简单的RNN和BP多层网络之间的区别
先来个简单的多层网络 RNN的原理和出现的原因,解决什么场景的什么问题 关于RNN出现的原因,RNN详细的原理,已经有很多博文讲解的非常棒了. 如下: http://ai.51cto.com/art/ ...
- ContentProvider示例
http://hi.baidu.com/pekdou/item/b2a070c37552af210831c678 首先,我自己是各初学者,网上一些关于ContentProvider的例子也不少,我自己 ...
- Linux内核学习总结(final)
Linux内核学习总结 符钰婧 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...
- 第二个spring冲刺第9天
其中一个队员在检查程序的BUG途中发现了几个重要的BUG比如答案乱码.程序闪退,弹出黑幕.于是我们决定先把这些问题解决再继续开发其他功能
- 登录窗口不是系统主窗口 但又需要最先显示 用delphi怎么编写代
主窗体FormShow事件(主窗体为Form1为例,Form2为登陆窗体) procedure TForm1.FormShow(Sender: TObject); begin if Form2.S ...
- Java之数据流-复制二进制文件
package test_demo.fileoper; import java.io.*; /* * 数值字节流操作,复制二进制文件 * 输入流:从文件中读取数据,扩展为数据流(二进制) * 输出流: ...
- wordpress WP-PageNavi分页
1.安装WP-PageNavi分页插件: 这个就没什么好介绍直接安装插件. 2.在需要分页的页面按下面的方式加上相应代码: 插入的位置在以 <?php if (have_posts()) : ? ...
- 【bzoj5073】[Lydsy1710月赛]小A的咒语 后缀数组+倍增RMQ+贪心+dp
题目描述 给出 $A$ 串和 $B$ 串,从 $A$ 串中选出至多 $x$ 个互不重合的段,使得它们按照原顺序拼接后能够得到 $B$ 串.求是否可行.多组数据. $T\le 10$ ,$|A|,|B| ...
- SPOJ DQUERY - D-query (莫队算法|主席树|离线树状数组)
DQUERY - D-query Given a sequence of n numbers a1, a2, ..., an and a number of d-queries. A d-query ...
- MT【178】平移不变性
(2008年北大自招)已知$a_1,a_2,a_3;b_1,b_2,b_3$满足$a_1+a_2+a_3=b_1+b_2+b_3$$a_1a_2+a_2a_3+a_3a_1=b_1b_2+b_2b_3 ...