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 ...
随机推荐
- 微软职位内部推荐-SW Engineer II for Azure Network
微软近期Open的职位: Software Engineer II The world is moving to cloud computing. Microsoft is betting Windo ...
- Python与rrdtool的结合模块
rrdtool(round robin database)工具为环状数据库的存储格式,round robin是一种处理定量数据以及当前元素指针的技术.rrdtool主要用来跟踪对象的变化情况,生成这些 ...
- ContentProvider示例
http://hi.baidu.com/pekdou/item/b2a070c37552af210831c678 首先,我自己是各初学者,网上一些关于ContentProvider的例子也不少,我自己 ...
- 2013337朱荟潼 Linux&深入理解计算机系统第七章读书笔记——链接
第七章--链接 0.总结 链接编译时可以采用静态链接或动态链接. 连接器主要任务:符号解析和重定位. 多个目标文件可定义相同的符号,可以被连接到一个单独的静态库. 链接器可以生成部分链接的可执行文件 ...
- beta3
吴晓晖(组长) 过去两天完成了哪些任务 一些细节的debug,部分优化,算法中有关记录的部分 展示GitHub当日代码/文档签入记录 接下来的计划 推荐算法 还剩下哪些任务 组员:刘帅珍 过去两天完成 ...
- MVC 如何设定默认默认路由为指定的Area下的某个action(笔记)
感谢这篇博文的作者:http://blog.csdn.net/chenqiangdage/article/details/48136601 最近使用VS2015开发一个统一认证服务,想将API自己生成 ...
- Linux命令(二十一) 改变文件所有权 chown 和 chgrp
目录 1.命令简介 2.常用参数介绍 3.实例 4.直达底部 命令简介 一个文件属于特定的所有者,如果更改文件的属主或属组可以使用 chown 和 chgrp 命令. chown 命令可以将文件变更为 ...
- Java结束线程的三种方法(爱奇艺面试)
线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁,不能再次start,只能重新建立新的线程对象,但有时run()方法是永远不会结束的.例如在程序中使用线程进行So ...
- images & Skeleton
images & Skeleton image placeholder & loading ... skeleton.css https://github.com/dhg/Skelet ...
- Exploring Pyramids UVALive - 3516 (记忆化DP)
题意:给定一个序列 问有多少棵树与之对应 题目连接:https://cn.vjudge.net/problem/UVALive-3516 对于这一序列 分两种2情况 当前分支 和 其它分支 用df ...