基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题
 收藏
 关注
X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。
给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0。
 
Input
第1行:线段的数量N(2 <= N <= 50000)。
第2 - N + 1行:每行2个数,线段的起点和终点。(0 <= s , e <= 10^9)
Output
输出最长重复区间的长度。
Input示例
5
1 5
2 4
2 8
3 7
7 9
Output示例
4

【分析】:(http://www.cnblogs.com/ECJTUACM-873284962/p/6665489.html?utm_source=itdadao&utm_medium=referral)
首先: 先将输入的区间起点按升序排序,若起点相同则按终点降序排序
比如5组区间:(1 5)(2 4)(2 8)(3 7)(7 9)
按上面所述排序: (1 5) (2 8)  (2 4) (3 7) (7 9)
这样很直观,为什么要起点升序,起点相同则按终点降序排序
起点升序很容易理解,我们要找区间覆盖最大长度
起点相同则按终点降序排序    明显(1 5)(2 8) 区间覆盖长度大于 (1 5)(2 4)
1区间覆盖
2区间包含跟不包含(一起处理) (应该选定一个参考区间)
1 区间覆盖: 直接是小区间的距离(2 8)(2 4) 直接是4-2=2;
2 区间包含跟不包含: 区间包含,就是第一个区间终点跟第二个区间起点的差值,eg: (1 5) (2 8)  即5-2=3
假如(1 5)是参考区间,那么比较完(1 5) (2 8)。参考区间应该为下一个区间,即(2 8).
因为后面的区间起始点都不比(2 8)小(起点升序)。又因为区间包含,就是第一个区间终点跟第二个区间起点的差值。
那么后面的区间跟(1 5)区间覆盖长度都没有比(2 8)区间覆盖长度大。所以这时再以(1 5)作为参考区间没有意义了。
为方便起见,就选取下一个区间作为参考区间,即(2 8).
总结一下:
          1.先将输入的区间起点按升序排序,若起点相同则按终点降序排序
          2.分两部分处理:区间覆盖+区间包含跟不包含
【代码】:
#include <bits/stdc++.h>

using namespace std;
struct node
{
int l,r;
}a[+]; bool cmp(node a,node b)
{
if(a.l!=b.l)
return a.l<b.l;
else
{
if(a.r!=b.r)
return a.r>b.r;
}
}
int main()
{
int n,ans;
while(cin>>n)
{
ans=;
for(int i=;i<n;i++)
cin>>a[i].l>>a[i].r;
sort(a,a+n,cmp);
node m=a[];
for(int i=;i<n;i++)
{
if(a[i].r<=m.r)
ans=max(ans, a[i].r-a[i].l);
else
{
ans=max(ans, m.r-a[i].l);
m=a[i];
}
}
cout<<ans<<endl;
}
return ;
}

51nod 1091 线段的重叠【贪心/区间覆盖类】的更多相关文章

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

    1091 线段的重叠 基准时间限制:1 秒 空间限制:131072 KB 分值: 5         难度:1级算法题 X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 2 ...

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

    1091 线段的重叠 X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]. 给出N条线段的起点和终点,从中选出2条线段,这两 ...

  3. [51nod] 1091 线段的重叠 贪心

    X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]. 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长 ...

  4. 51Nod 1091 线段的重叠 (贪心)

    X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]. 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长 ...

  5. 51 Nod 1091 线段的重叠 (贪心算法)

    原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1091 思路分析:通过读题不难发现这是一道涉及贪心算法的题,刚 ...

  6. 【题解】Cut the Sequence(贪心区间覆盖)

    [题解]Cut the Sequence(贪心区间覆盖) POJ - 3017 题意: 给定一大堆线段,问用这些线段覆盖一个连续区间1-x的最小使用线段的数量. 题解 考虑一个这样的贪心: 先按照左端 ...

  7. 高效算法——E - 贪心-- 区间覆盖

    E - 贪心-- 区间覆盖 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=85904#problem/E 解题思路: 贪心思想, ...

  8. nyoj 12——喷水装置二——————【贪心-区间覆盖】

    喷水装置(二) 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 有一块草坪,横向长w,纵向长为h,在它的橫向中心线上不同位置处装有n(n<=10000)个点状的 ...

  9. UVA 10382 - Watering Grass【贪心+区间覆盖问题+高精度】

    UVa 10382 - Watering Grass n sprinklers are installed in a horizontal strip of grass l meters long a ...

随机推荐

  1. 七夕蠕虫“XX神器”逆向分析

    转载请注明出处 ____________________________________________________________________________________________ ...

  2. Python 3基础教程5-while循环语句

    本文开始介绍循环语句,和其他编程语言一样,Python中有while循环和for循环,这里介绍while循环. 语法: while 条件表达式为真: 做一些事情 实际生活中有很多这样的循环场景,这里举 ...

  3. 聊聊、Mybatis API

    API Mybatis 到底解决了什么问题,持久化框架是什么,没出现 Mybatis 之前我们又是怎么来操作数据库的呢?对于 Java语言 来说,JDBC标准 是比较底层的了,但并非最底层的,可以说 ...

  4. php连接数据库增删改查----多条件查询

    关于查询,可以直接写在主页面上 来进行查询 首先,先建立一个表单 <form method="post" action="crud.php"> &l ...

  5. mysql安装目录、配置文件存放位置

    linux系统下,如何知道mysql使用的配置文件到底是哪个呢?linux自带的mysql的安装目录又是什么呢?数据存放在什么目录下? 1.linux系统自带的mysql,其安装目录及数据目录查看方法 ...

  6. .net的CLR

    搜索:CLR结构图 C#所具有的许多特点都是由CLR提供的,如类型安全(Type Checker).垃圾回收(Garbage Collector).异常处理(Exception Manager).向下 ...

  7. atom下python好用的几个插件

    atom下python好用的几个插件 atom-beautify 代码优化 atom-python-run 运行 autocomplete-python 代码补全 file-icons 图标优化 hi ...

  8. jQuery选择器之元素选择器

    元素选择器:根据给定(html)标记名称选择所有的元素. 描述: $('element') 搜索指定元素标签名的所有节点,这是一个合集的操作.同样的也有原生方法getElementsByTagName ...

  9. 基于linux操作系统安装、使用memcached详解

    1.memcached的应用背景及作用 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态. ...

  10. MyBatis:SQL语句中的foreach标签的详细介绍

    foreach 也就是遍历迭代,在SQL中通常用在 in 这个关键词的后面 foreach元素的属性主要有 item,index,collection,open,separator,close. 分别 ...