一、题目描述

链接:https://www.acwing.com/problem/content/1345/
来源:ACwing

每天早上 5 点,三名农夫去牛场给奶牛们挤奶。

现在从 5 点开始按秒计时,第一名农夫在第 300 秒开始给牛挤奶,并在第 1000 秒停止挤奶。

第二名农夫在第 700 秒开始给牛挤奶,并在第 1200 秒停止挤奶。

第三名农夫在第 1500 秒开始给牛挤奶,并在第 2100 秒停止挤奶。

从开始挤奶到挤奶完全结束,这一期间,至少存在一名农夫正在挤奶的连续时间段的长度最长为 900 秒(第 300 秒至第 1200 秒),完全没有任何农夫在挤奶的连续时间段的长度最长为 300 秒(第 1200 秒至第 1500 秒)。

现在给你 N 名农夫挤 N 头奶牛的工作时间表,请你求出:

至少存在一名农夫正在挤奶的连续时间段的最长长度。
没有任何农夫在挤奶的连续时间段的最长长度。
注意:本题中给出的所有时间均为时刻(时间点),因此在本题中挤奶区间 [100,200] 和 [201,300] 中间会有长度为 1 秒的间歇时间。

输入格式
第一行包含整数 N,表示农夫数量。

接下来 N 行,每行包含两个非负整数 l,r,表示农夫挤奶的开始时刻和结束时刻。

输出格式
共一行,包含两个整数,分别表示最长连续挤奶时间以及最长连续无人挤奶时间。

数据范围
1 ≤ N ≤ 5000,
1 ≤ l ≤ r ≤ 106

输入样例

3
300 1000
700 1200
1500 2100

输出样例

900 300

二、题解

题目理解
有N名农夫挤牛奶,并且分别给了他么挤牛奶的开始时间和结束时间。要我们输出最长连续挤奶时间段最长无人挤奶连续时间段的长度。

解题思路
思路很清晰了,如果两个人的挤奶时间有重合部分,那么这两个人的挤奶时间就可以合并为一段。
当我们把所有能合并的时间都合并完后,最长连续挤奶时间段就是我们合并后区间段的最长长度;最长无人挤奶连续时间段就是我们合并后区间段间距离的最大值。

如何合并

区间合并问题:
1、将所有区间按照左端点排序
2、从左到右遍历所有区间,维护当前区间的合并区间维护过程:
1、当前区间的左端点,在当下维护区间的r的左端,说明有交集。对当前区间的右端点和当前维护区间的右端点取较大值,作为当前维护区间的右端点。
2、当前区间的左端点在当下维护维护区间r的右端。说明当前区间和当前维护区间无交集。则当前维护区间结束,新的维护区间的[l,r]与当前区间相同。时间复杂度:
O(nlogn),左端点排序的复杂度。

三、AC代码

#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN = 5010;
typedef struct
{int l;int r;
}Interval;
bool cmp(Interval x,Interval y)
{return x.l < y.l;
}
Interval Time[MAXN];
Interval inter[MAXN];
int n,num;
int main()
{cin >> n;for (int i = 0; i < n; i++){cin >> Time[i].l >> Time[i].r;}sort(Time,Time + n,cmp);inter[0].l = Time[0].l;inter[0].r = Time[0].r;for (int i = 1; i < n; i++){if (Time[i].l <= inter[num].r){// 当前区间可以和当前维护区间合并inter[num].r = max(inter[num].r,Time[i].r);}else{// 当前区间不能和当前维护区间合并inter[++num].l = Time[i].l;inter[num].r = Time[i].r;}}int ans1 = inter[0].r - inter[0].l;int ans2 = 0;for (int i = 1; i <= num; i++){ans1 = max(ans1,inter[i].r - inter[i].l);ans2 = max(ans2,inter[i].l - inter[i-1].r);}cout << ans1 << " " << ans2 << endl;system("pause");return 0;
}

如果该题解对您有帮助,还望您不吝点赞。
欢迎讨论交流,期待共同进步!

USACO_CHA1_挤牛奶相关推荐

  1. Milking Cows 挤牛奶

    1.2.1 Milking Cows 挤牛奶 Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 554  Solved: 108 [Submit][Stat ...

  2. [USACO1.2]挤牛奶Milking Cows

    题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒.第二个农民在700秒开始,在 1200秒结束.第三个农民在1500秒开 ...

  3. 【USACO题库】1.2.1 Milking Cows挤牛奶

    一开始认为过不了,后来交就AC了. 1007. [USACO题库]1.2.1 Milking Cows挤牛奶 (File IO): input:milk.in output:milk.out 题目描述 ...

  4. USACO 1.3.1 挤牛奶

    1.3.1 挤牛奶 题目考查 区间合并 解题思路 我们将所有挤奶的区间按照左端点从小到大排序, 遍历所有区间. 不妨设当前连续的区间为[L, R], 遍历到的新区间为[l, r]. 此时有两种情况: ...

  5. DP地狱训练 挤牛奶

    1257: [DP地狱训练]挤牛奶 时间限制: 1 Sec  内存限制: 64 MB 提交: 917  解决: 260 [提交][状态][讨论版] 题目描述 小卡卡终于帮农夫John找到了走丢的那一头 ...

  6. 挤牛奶Milking Cows

    挤牛奶Milking Cows 这道题问的是有一条线段覆盖的最大区间和没有线段覆盖的区间. 先按照起点排序,然后从第二条线段开始判断.如果该线段的起点小于上一线段终点,则说明这两条线 段有重合部分,将 ...

  7. 东华oj-进阶题第87题-挤牛奶

    87 挤牛奶 作者: xxx时间限制: 1S章节: 结构体 问题描述 : 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300时刻(从5点开始计时,秒为单位)给他的牛挤奶,一直到100 ...

  8. 啊哈算法12009: 1.2-1挤牛奶 两种解法

    一.题目描述 标题: 1.2-1挤牛奶 标签: 模拟 排序 详情: 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒.第二个农民在 ...

  9. USACO 1.2 挤牛奶

    Description 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300时刻(从5点开始计时,秒为单位)给他的牛挤奶,一直到1000时刻.第二个农民在700时刻开始,在 1200时 ...

最新文章

  1. 在双系统电脑再安装一个ubuntu18.04
  2. Android10.0 Binder通信原理(一)Binder、HwBinder、VndBinder概要
  3. [导入]PHP5的异常处理
  4. commonJS — 全局操作(for Window)
  5. HDU 5102 The K-th Distance
  6. 初学SpringBoot之三
  7. android启动模式
  8. [转载] 十种方式拼接Python字符串
  9. Java TCP案例网络聊天室
  10. Android软键盘问题
  11. 谷歌浏览器未发送任何数据_将 service worker 引入谷歌搜索
  12. 第四章 SQL语法分类
  13. C++ 使用 OpenCV 实现证件照蓝底换成白底功能(或其他颜色如红色)详解
  14. Failed to connect to server(code:1006)
  15. Mysql之分组查询
  16. VSCode ctrl+鼠标左键无法跳转,F12可以跳转
  17. 如何通过Java导出带格式的 Excel 数据到 Word 表格
  18. 存储容量和IOPS的关系
  19. 关于Linux系统之VM安装配置
  20. C# 创建MDI窗体

热门文章

  1. 上海房价和东京房价比较
  2. 《互联网信贷风险与大数据》读书笔记(二)
  3. 学生DW网页设计作业成品 简单的学校网站制作与实现 HTML+CSS+JS
  4. copa-pi测试软件,COPA-DATA SCADA/HMI自动化软件中的先锋——zenOn 6.20
  5. 最近用周立功的IOT3960板子做一个小控制器,现在到了界面美化阶段,各位大侠有没有高招?
  6. 艾美捷焦磷酸(PPi)分析试剂盒,高通量筛选神器
  7. 抖音小程序调起支付宝支付php微擎代码和HTML代码
  8. 数据可视化分析教学课件——FineBI实验册节选====活动分析
  9. 法律部门和法律体系(概念、我国现行的法律部门和法律体系 )、法 律 关 系(概念、构成要素:主体、内容、客体)、法律事实(法律事件、法律行为)
  10. 在网络隔离下实现文件传输交换,你的方式真的安全吗?