1091 线段的重叠 区间重叠

51Nod1091 线段的重叠(贪心法+区间相关) 题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1091 X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0 阅读详情

题目链接

思路
保证思路的有序性。
如果拿出来每一条边与其他边进行比较,那么一定可以得出答案。
但是一条边[l,r]只能和与它有交集的边产生可能。那么进行排序,按照左端点,在某条边的l大于当前选择的边的r时break。
能否在O(n)的算法处理呢?
也就是说,枚举的区间是有选择性的。

这里写图片描述

假设当前选定的区间是A。
那么之后的区间有ECDE四种情况,再加上 无交集的情况。
1.如果是B,C,E,那么还是以A去扫描后面的区间,因为A是覆盖B,C,E
2.如果是E,那么E之后的区间的左端点都是大于L5,此时选定的区间应该从A转移到E

#include <bits/stdc++.h>

using namespace std;
struct node {
    int left;
    int right;
    node(int l,int r) {
        left = l;right = r;
    }
};

vector<node> vec;

bool cmp(node a,node b) {
    if ( a.left!=b.left ) return a.left<b.left;
    else return a.right>b.right;
}

int main()
{
    int n;
    cin>>n;
    for ( int i=0;i<n;i++ ) {
        int a,b;
        scanf("%d%d",&a,&b);
        vec.push_back( node(a,b) );
    }
    sort( vec.begin(),vec.end(),cmp ) ;

    int p = 0 ;
    int l=vec[p].left,r=vec[p].right;
    p++;
    int len = 0;
    while ( p<vec.size() ) {
        if ( vec[p].right <= r ) {
            len = max( len,vec[p].right-vec[p].left ) ;
        } else {
            len = max( len,r-vec[p].left ) ;
            r = vec[p].right;
            l = vec[p].right;
        }
        p++;
    }
    cout<<len<<endl;
    return 0;
}
C++用红黑树实现线段的重叠问题 本程序使用C++,红黑树实现线段重叠问题的查找,程序中有详细的注释,方便阅读。 立即下载

相关推荐

Allegro老鸟的20年效率秘籍:用YepEda Skill脚本实现PCB设计全流程自动化

本文分享了Allegro资深工程师20年效率秘籍,通过YepEda Skill脚本实现PCB设计全流程自动化。从封装建库到规则配置,再到DFM审核,YepEda Skill大幅提升设计效率,每天节省至少4小时重复劳动。文章详细解析了自动化工具链的核心功能,并提供了实战技巧和量化对比数据。

weixin_42546392的博客 239

最大重叠区间数问题(华为) 2021-07-21

1、自动驾驶出租车订单分配 某城市开展自动驾驶出租车试运营,在城市里面设置了N个固定的,上下客出租车站点,为了方便计算,假设这些站点呈圆形部署。相邻2个站点的行车时间固定为5 ,每个站点内的出租车数目足够多,每辆出租车运行的时候在圆形线路上运行,方向可以顺时针也可以逆时针,选择最短的路线运行,如果起始和终点相同,则为无效订单。不处理。现在有N个乘客使用APP下发订单,包含使用出租车的时间,上车的站点下车的站点,请计算整个运作周期最多有多少辆出租车同时运营。下车时间点的车辆不计算在运行车辆中。 解答要求 时间

sususuqingxiao的博客 1017

Python实战:动态爬取国家地表水水质实时监测数据(附最新代码解析)

本文详细介绍了使用Python动态爬取国家地表水水质实时监测数据的实战方法。针对动态网站数据加载特点,重点解析了如何利用Selenium模拟浏览器操作、结合BeautifulSoup解析数据,并提供了最新的代码实现与常见问题解决方案,帮助开发者高效获取环境监测数据。

app77的博客 280

线段的重叠与不重叠问题

一、线段的重叠问题 #include&lt;cstdio&gt; #include&lt;iostream&gt; #include&lt;algorithm&gt; #define N 50005 using namespace std; struct line {     int s;     int e; } a[N]; int cmp(line x,line y) {//将线段按照 左...

qq_41054042的博客 1877

Zigbee智能开关和单火取电技术

ZigBee智能开关(单火线)是在ZigBee协议基础上开发由单火线供电的开关,它可以控制各种类型负载的开关,如LED灯,白炽灯,荧光灯和钨丝灯等。配合相应的主机用户可以使用手机远程控制它,进而达到控制灯光开关的目的。它具有自组网功能,使用简单方便,给你的居家生活带来无线享受。可应用于家庭,办公,医院和酒店等场合。

danhuoxian的博客 1万+

QGIS v3.28 高效加载OSM在线地图的三种实用方法

本文详细介绍了在QGIS v3.28中高效加载OSM在线地图的三种实用方法:通过XYZ Tiles直接连接、使用QuickMapServices插件以及配置WMS/WTMS服务。针对每种方法提供了具体操作步骤、常见问题解决方案和性能优化建议,帮助用户根据需求选择最适合的方案,提升GIS工作效率。

weixin_29233333的博客 434

[贪心]最大线段重叠

https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1091 按照左端点从小到大,相等时右端点从小到大排序,扫一遍数组,维护之前所有线段最右的端点,由于数组已经排过序了,所以可以保证之前所有线段的左端点一定小于等于当前所选择线段的左端点,所以就不用管左端点,直接用当前线段的右端点和之前所有线段的最大右端点比较一下,更新答案和最大右端点。 #include<bits/stdc++.h> using namespace std

wulalalawu的博客 396

华为路由器 VRRP主备配置

3、R3 出口路由器。

一直被模仿,从未被超越 5590

最大线段重合问题(用堆实现)

最大线段重合问题

明朗晨光的专栏 1376

I-Cache 和 D-Cache

I-Cache 和 D-Cache

liuyuanbin9001 7023

图神经网络实战(1)——图神经网络(Graph Neural Networks, GNN)基础

本节全面介绍了图神经网络 (Graph Neural Network, GNN) ,包括其在数据分析和机器学习中的重要性。首先探讨了图作为数据表示的相关概念及其在各个领域的广泛应用;然后深入探讨图学习的重要性,包括不同的应用和技术。最后,重点介绍了 GNN 架构,并对比了它与其他方法之间的原理和性能差异。

盼小辉丶的博客 15万+

51Nod 1091 线段的重叠(贪心+区间相关

1091线段的重叠 X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0。 Input 第1行:线段的数量N(2<=N<=...

YZ930035683的博客 213

R语言线性混合模型(LMM)分析

它将数据表示为固定效应和随机效应的线性组合,其中固定效应表示总体均值的影响,随机效应表示个体间的随机差异。LMM的目标是通过最大似然估计或最小二乘估计来估计模型中的固定效应和随机效应的参数。LMM结合了固定效应和随机效应,能够同时考虑个体间和个体内的变异,并适用于具有相关性的数据。目前在使用LMM的R语言包中,较常用的是lme4和nlme包,它们提供了丰富的函数和工具来拟合和分析线性混合模型。面板数据分析:LMM适用于分析具有面板结构的数据,如经济学中的面板数据或教育研究中的学生评估数据。

走向CTO的路上... 2971

(贪心 区间) 51nod1091 线段的重叠

X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0。 输入 第1行:线段的数量N(2 <= N <= 50000)。 第2 - N + 1行:每行2个数,线段的起...

140

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

51Nod 1091 线段的重叠 (区间贪心

1091 线段的重叠基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0。 Input 第1行:线段的数量

Yishui_lovely 445

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

51nod 1091线段的重叠【贪心】【区间相关】

51nod 1091线段的重叠 排序前 排序后   #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;math.h&gt; using namespace std; const int maxn=...

不甘 187

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

51Nod 1091 线段重叠 贪心 区间重叠

按左端点排序,然后维护右端点最大值,贪心的思想。。。明明线扫一遍O(n)就好……然额……还是想得有些复杂 51Nod 1091 线段重叠 传送门 #include<iostream> #include<algorithm> #include<vector> #include<string.h> #include<stac...

weixin_30853329的博客 120

51nod 1091 线段的重叠【贪心/区间覆盖类】

1091线段的重叠 基准时间限制:1秒 空间限制:131072KB 分值:5难度:1级算法题 收藏 关注 X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,...

weixin_33737774的博客 201

51 nod 1091 线段的重叠(贪心 区间问题)

1091 线段的重叠 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0。Input第1行:线段的数量N(2 &lt...

放纵不羁爱自由 266

51Nod 1091 线段的重叠(贪心+区间相关,板子题)

1091 线段的重叠                 基准时间限制:1 秒 空间限制:131072 KB 分值: 5         难度:1级算法题    X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最...

weixin_34399060的博客 109
上一篇: Codeforces 6A 三角形
下一篇: FZU - 2150 两点BFS 技巧
Peppermint__
博客等级 码龄10年 4粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值