题意:吉哥的假期是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 吉哥系列故事——临时工计划(一维动态规划)的更多相关文章

  1. hdu 4502吉哥系列故事——临时工计划 (简单DP)

    Problem Description 俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要压岁钱了,只 ...

  2. hdu 4502 吉哥系列故事——临时工计划_简单dp

    题意:        俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要压岁钱了,只能把唯一的希望放到 ...

  3. hdu 4502 吉哥系列故事——临时工计划(dp)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4502 思路:一个简单的dp ,比赛时没做出来呢..... d[i]代表 到第i天时的最大值 #includ ...

  4. 吉哥系列故事——临时工计划(dp)

    吉哥系列故事——临时工计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...

  5. HDUOJ----4502吉哥系列故事——临时工计划

    吉哥系列故事——临时工计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  6. 吉哥系列故事――临时工计划(dp)

    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Descr ...

  7. HDU4502吉哥系列故事——临时工计划

    http://acm.hdu.edu.cn/showproblem.php?pid=4502 题意 :这个是中文题,我就不再详述了. 思路 : 以前做过一个活动区间选择,结果就按着那个思路敲了,后来发 ...

  8. HDU--杭电--4502--吉哥系列故事——临时工计划--背包--01背包

    吉哥系列故事——临时工计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) To ...

  9. hdu 4512 吉哥系列故事——完美队形I【LCIS经典应用】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=4512 http://acm.hust.edu.cn/vjudge/contest/view.action ...

随机推荐

  1. PAT甲题题解-1014. Waiting in Line (30)-模拟,优先级队列

    题意:n个窗口,每个窗口可以排m人.有k为顾客需要办理业务,给出了每个客户的办理业务时间.银行在8点开始服务,如果窗口都排满了,客户就得在黄线外等候.如果有一个窗口用户服务结束,黄线外的客户就进来一个 ...

  2. 读C#程序

    阅读下面程序,请回答如下问题: 问题1:这个程序要找的是符合什么条件的数? 问题2:这样的数存在么?符合这一条件的最小的数是什么? 问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间 ...

  3. SpringBoot 2.SpringBoot整合Mybatis

    一.创建Springboot的配置文件:application.properties,并添加MyBatis依赖 SpringApplication 会从 application.properties  ...

  4. 【BOM】浏览器对象模型

    1.navigator :保存浏览器配置信息的对象 常用 navigator.plugins: 显示浏览器中所有插件信息的集合 navigator.cookieEnabled: 判断是否开启cooki ...

  5. 【刷题】LOJ 2587 「APIO2018」铁人两项

    题目描述 比特镇的路网由 \(m\) 条双向道路连接的 \(n\) 个交叉路口组成. 最近,比特镇获得了一场铁人两项锦标赛的主办权.这场比赛共有两段赛程:选手先完成一段长跑赛程,然后骑自行车完成第二段 ...

  6. 利用scrapy_redis实现分布式爬虫

    介绍 Scrapy框架不支持分布式,所以需要将一些关键代码进行修改使之支持分布式.scrapy-redis相当于一个插件,用来替换scrapy中的一些模块,使得scrapy支持分布式.github地址 ...

  7. SP8093 JZPGYZ - Sevenk Love Oimaster 解题报告

    SP8093 JZPGYZ - Sevenk Love Oimaster 题目大意 给定\(n(n\le 10000)\)个模板串,以及\(m(m\le 60000)\)个查询串(模板串总长\(\le ...

  8. Python 通过gevent实现协程

    #coding:utf-8-*- '''协程(coroutine)又称微线程.纤程,是一种用户级的轻量级线程.协程有自己的寄存器上下文和栈.携程调度时,将寄存器上下文和栈 保存,在切换回来的时候恢复保 ...

  9. CDN中,字体文件的跨域问题和解决

    @font-face是CSS3中的一个特性,可以把自己定义的Web字体嵌入到网页中,随着@font-face,越来越多的网页采用字体图标作为网页中的小图形. 比如Bootstrap就采用了Glyphi ...

  10. python之旅:网络编程

    一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频 ...