石油大提交网址:http://exam.upc.edu.cn/problem.php?id=4203

4203: MJF wants to work

时间限制: 1 Sec  内存限制: 128 MB
提交: 60  解决: 11
[提交][状态][讨论版]

题目描述

MJF feel the summer vacation is very leisure. So he wants to work to earn money.
There are n jobs MJF can take part in.For job i, it has the start time ti.x, the end time ti.y and reward ci.
MJF wants to take part in two jobs (exact two jobs), and he wants to earn exactly M yuan. He doesn't want to earn one money more,he thinks it's a waste.
Becase MJF is a lazy boy, so he wants the time of the sum of two jobs shortest.
Becase MJF can only take part in one job in a time.So two jobs can't overlap.(ti.y < tj.x)

输入

The input consists of multiple test cases. 
For each test,the first line contains 2 integers n, m.(1 <= n, m <= 2e5)
Then following n lines, each line contains 3 integers ti.x, ti.y, ci.(1 <= ti.x, ti.y, ci <= 2e5)

输出

For each test case, print the value of the sum of two jobs' time.if there are no answer,please print"oh no!"

样例输入

3 10
1 2 3
3 4 7
4 6 7
1 10
1 10 10

样例输出

4
oh no!

【解析】:

把每一个区间的左右端点拆开,但要两端点都记住自己的money和time。

然后按时间先后排序,扫一遍,此过程中,遇到右端点,就存一下此工作结束后的钱数与所用时间(最小值)

这里用的是dp数组。dp[i]表示挣钱为i的工作所用的时间(最小)。

遇到左端点,就把这项工作与前面已经扫过的工作组合,加一下时间,不断更新ans(最小)

【代码】:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
#define mset(a,i) memset(a,i,sizeof(a))
using namespace std;
const int INF=0x3f3f3f3f;
const int MAX=1e6+5;
struct node{int p,flag;int money;int time;
}e[MAX*4];
int dp[MAX*2];
int n,m,cnt;
void add(int l,int r,int val)
{e[cnt].p=l;e[cnt].flag=0;//左端点 e[cnt].money=val;e[cnt].time=r-l+1;cnt++;e[cnt].p=r;e[cnt].flag=1;//右端点 e[cnt].money=val;e[cnt].time=r-l+1;cnt++;
}
bool cmp(node a,node b)
{if(a.p==b.p)return a.flag<b.flag;//若左右端点同点,先处理左; return a.p<b.p;//按端点排序
}
int solve()
{sort(e,e+cnt,cmp);mset(dp,INF);//dp[i]记录当赚钱为i时,所用的最小时间int ans=INF;for(int i=0;i<cnt;i++){if(e[i].flag==0)//左{ans=min(ans,dp[m-e[i].money]+e[i].time);}else{dp[e[i].money]=min(dp[e[i].money],e[i].time);}}return ans;
}
int main()
{while(~scanf("%d%d",&n,&m)){cnt=0;for(int i=0;i<n;i++){int l,r,val;scanf("%d%d%d",&l,&r,&val);add(l,r,val);}int ans=solve();       if(ans==INF)puts("oh no!");elseprintf("%d\n",ans);}
}

2017ICPC北方邀请赛H题 MJF wants to work(贪心)相关推荐

  1. 2017湘潭大学邀请赛H题(树的直径)

    链接:https://www.icpc.camp/contests/4mYguiUR8k0GKE H. Highway The input contains zero or more test cas ...

  2. 一类SG函数递推性质的深入分析——2018ACM陕西邀请赛H题

    题目描述 定义一种有根二叉树\(T(n)\)如下: (1)\(T(1)\)是一条长度为\(p\)的链: (2)\(T(2)\)是一条长度为\(q\)的链: (3)\(T(i)\)是一棵二叉树,它的左子 ...

  3. 2019 年TI杯全国大学生电子设计竞赛H题模拟电磁曲射炮

    2019 年TI杯全国大学生电子设计竞赛H题模拟电磁曲射炮 前言 首先要肯定电子设计竞赛的含金量,而也正是电子设计竞赛给了我本科阶段最好的体验.此文章介绍的作品是我所在团队于2019年参加电赛的参赛作 ...

  4. 2017全国大学生电子设计竞赛H题:远程幅频特性测试仪:主控STM32F407

    2017年全国大学生电子设计竞赛 远程幅频特性测试仪(H题) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9sPfFjy1-1618627176227)(media/ ...

  5. H题:简易功率测量装置(高职高专)-- 2018年TI杯大学生电子设计竞赛

    H题:简易功率测量装置(高职高专)-- 2018年TI杯大学生电子设计竞赛 文章目录 H题:简易功率测量装置(高职高专)-- 2018年TI杯大学生电子设计竞赛 1.任务 2.要求 3.说明 1.任务 ...

  6. 【立创EDA开源推荐】005期 | 2019年电赛H题 电磁炮(激光版)

    工程名称: 2019年电赛H题 电磁炮(激光版) 工程作者:zzxw 工程主页链接: https://oshwhub.com/kakaka/tu-ya-zhi-neng-yun-duo 开源协议: G ...

  7. 模拟电磁炮国一设计资料【2019电赛H题国一作品】

    经历重重测试,从初赛杀进综测再到去上海复测,真是一路坎坷啊!回顾电赛准备阶段,在实验室基地的我们熬了多少个夜,废寝忘食的学习-仅仅是为了能更有信心的面对电赛:在电赛的四天三夜中我们经历了太多,我们将近 ...

  8. 2017年电赛国赛H题《远程幅频特性测试装置》训练总结(信号接收采集部分)

    系列文章链接目录 一.2017年电赛国赛H题<远程幅频特性测试装置>训练总结(DDS信号源部分) 二.2017年电赛国赛H题<远程幅频特性测试装置>训练总结(放大器部分) 三. ...

  9. 2019 年(H 题)模拟电磁曲射炮

    2019 年(H 题)模拟电磁曲射炮 2019 年全国大学生电子设计竞赛试题 [本科组] 文章目录 2019 年(H 题)模拟电磁曲射炮 一.任务 二.要求 1 .基本要求 2.发挥部分 三.说明 四 ...

  10. 2019全国大学生电子设计大赛H题 模拟电磁炮系统全国一等奖

    2019全国大学生电子设计大赛H题 模拟电磁炮系统全国一等奖 作者 xxx 队友 阿华 狗子 (想要比赛指导的可以xian鱼搜索 电子设计竞赛国一竞赛指导(发布人为晨星)) (想要源码和我比赛时候准备 ...

最新文章

  1. 公安部拟规定:窃取个人信息不构成犯罪也处罚
  2. Dubbo-入门指南+实例
  3. C++ 重载机制实现原理
  4. mysql5.7编译安装路径_MySQL_MySQL 5.5/5.6/5.7及以上版本安装包安装时如何选择安装路径,安装环境需求: 自从昨天安 - phpStudy...
  5. TCP/IP 通信示例
  6. python GUI编程tkinder
  7. 提取tsv数据并转化成json——致找不出怎么提取tsv文件中数据的五小时
  8. 数据科学常用Python库介绍--Numpy、Scipy、Pandas、Matplotlib、Plotly、SciKit-Learn等
  9. Windows系统卸载MySQL
  10. 超声波测距(含报警功能)
  11. vps部署ssl,让域名可以https访问的最简单的办法 ssl无法ie访问 https在ie访问报错的处理办法
  12. Word文档输出为pdf时目录出现“错误!未定义书签!”
  13. Linux常用命令大全(非常全!!!)
  14. C#实现简单点餐系统
  15. 【原创】Moon在2005的辉煌
  16. github网站扩展增强
  17. 各大IT公司校园招聘程序猿笔试 面试题集锦
  18. 华硕电脑改光驱启动计算机,华硕笔记本怎么在BIOS里设置从光驱开启重装系统...
  19. APP手机软件开发方案怎么做?
  20. 一个简单的网站(适合课设)

热门文章

  1. mysql latch_MySQL8.0 - InnoDB里的Latch定义-阿里云开发者社区
  2. 我为什么鼓励工程师写 blog?
  3. C# winfrom 在button按钮上显示箭头
  4. npm 如何处理依赖与依赖冲突
  5. 菜学C++ Day55 OJ题目1151桐桐数
  6. Linux C/C++ 共享库so的搜索路径和顺序
  7. 人工智能-语音交互-NLP自然语言(三) 语法-敲黑板
  8. [LOJ#6198]谢特[后缀数组+trie+并查集]
  9. github项目下载单个文件夹的办法
  10. 计算机专业考研的好学校排名2015,计算机类专业考研最好的学校排名