AcWing 1343. 挤牛奶(每日一题)

简介: AcWing 1343. 挤牛奶(每日一题)

原题链接:1343. 挤牛奶 - AcWing题库

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

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


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


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


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


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


  1. 至少存在一名农夫正在挤奶的连续时间段的最长长度。
  2. 没有任何农夫在挤奶的连续时间段的最长长度。

注意:本题中给出的所有时间均为时刻(时间点),因此在本题中挤奶区间 [100,200]和 [201,300] 中间会有长度为 1 秒的间歇时间。


输入格式


第一行包含整数 N,表示农夫数量。


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


输出格式


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


数据范围


1≤N≤5000

0≤l≤r≤10^6


输入样例:

3
300 1000
700 1200
1500 2100

输出样例:

900 300

题解

主要就是区间是否重合,重合则不断扩大,顺便求一个连续的空白区间,算法标签,区间合并,先对区间排序,先选取第一个数据作为起始,如果新的区间右端点小于等于此时r,更新r为最大值。如果遇到断开不连续的区间则用second-r去找无人挤牛奶的时间,每次取最大值。最后注意把最大接牛奶时间更新一下,不然会漏掉最后一个数据,或者漏掉只有一组数据的情况。

#include<iostream>
#include<algorithm>
using namespace std;
typedef pair<int,int> PII;
const int N=5005;
int n;
int res1,res2;//res1最长连续挤奶时间,res2及最长连续无人挤奶时间
PII a[N];
int main(){
  cin>>n;
  for(int i=0;i<n;i++){
    cin>>a[i].first>>a[i].second;
  }
  sort(a,a+n);//按照first排序
  int l=a[0].first,r=a[0].second;//初始第一个
  for(int i=1;i<n;i++){
    if(a[i].first<=r){//如果一部分在这个区间里则更新右端点
      r=max(r,a[i].second);
    }else{
      res1=max(res1,r-l);
      res2=max(res2,a[i].first-r);
      l=a[i].first;//不在需要再开一个新的区间更新此时的l,r
      r=a[i].second;
    }
  }
  res1=max(res1,r-l);//把最后一组数据也统计进来。或者特例只有一个数据,直接计算就行
  cout<<res1<<" "<<res2<<endl;
  return 0;
}

此题比较简单,思路很清晰,主要模拟为主,但是一些细节方面也挺多,注意一下就行,文章有错误的地方,恳请各位大佬指出,共同学习进步。

相关文章
高质量毕业答辩PPT模板+PPT网站
高质量毕业答辩PPT模板+PPT网站
822 0
|
JavaScript
搭建Vue3组件库:第四章 使用Vitepress搭建文档网站
文档建设一般会是一个静态网站的形式 ,这次采用 Vitepress 完成文档建设工作。 Vitepress 是一款基于Vite 的静态站点生成工具。开发的初衷就是为了建设 Vue 的文档。Vitepress 的方便之处在于,可以使用流行的 Markdown 语法进行编写,也可以直接运行 Vue 的代码。也就是说,它能很方便地完成展示组件 Demo 的任务。
2214 0
搭建Vue3组件库:第四章 使用Vitepress搭建文档网站
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
存储 人工智能 自然语言处理
结合CAMEL框架与QWEN实现数据合成,奖励模型评估和数据过滤工作流
本笔记本展示了如何结合CAMEL框架与QWEN实现数据合成、奖励模型评估和数据过滤的工作流。通过CAMEL的多代理系统,支持复杂AI任务的数据生成与评估。我们使用Firecrawl加载器从网页获取内容,并利用NVIDIA的Nemotron奖励模型对生成的数据进行评分和过滤。最后,通过设定阈值筛选高质量的数据条目。整个过程包括安装依赖、输入API密钥、定义数据生成函数、评估生成数据的质量以及过滤低质量数据。此方法适用于需要评估和优化AI生成内容的各种场景。
469 31
结合CAMEL框架与QWEN实现数据合成,奖励模型评估和数据过滤工作流
|
数据库 索引
联合索引和单独列索引哪个更好
【10月更文挑战第15天】联合索引和单独列索引哪个更好
593 2
|
人工智能 IDE 程序员
AI程序员入场!揭秘直播吧研发效能大提升的秘密武器
对于直播吧而言,这不仅是工具升级,更是研发模式向「人与AI协同型」跃迁的战略选择。
|
编译器 Go C语言
Zig 基本语法
Zig 基本语法
395 3
|
传感器 监控 安全
创新无限:物联网技术在智慧城市构建中的前沿探索
【10月更文挑战第29天】在这个信息爆炸的时代,物联网(IoT)技术正重塑我们对城市的认知。智慧城市已从科幻走向现实,物联网通过连接各种设备和传感器,收集、分析数据,提升城市运行效率和居民生活质量。从智慧城管、智能交通、智慧水务到智能电网,物联网的应用正逐步实现城市的智能化、互联化和可持续发展。
419 1
|
jenkins 持续交付 开发工具
Jenkins 与 Docker 集成的最佳实践
【8月更文第31天】随着容器技术的兴起,越来越多的团队开始采用 Docker 来构建和部署应用。Docker 提供了一种轻量级的虚拟化方法,使得应用可以在任何地方以相同的方式运行,这极大地提高了开发效率和部署的一致性。与此同时,Jenkins 作为一种广泛使用的持续集成/持续交付(CI/CD)工具,可以帮助团队自动化构建、测试和部署流程。本文将探讨如何将 Docker 与 Jenkins 集成,以简化开发环境的搭建和维护。
1067 0
|
机器学习/深度学习
交通流量预测LSTM实战 详细教学计算机毕设
交通流量预测LSTM实战 详细教学计算机毕设
528 0

热门文章

最新文章