题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1091

题意:中文题诶~

思路:贪心;

我们先将数据按照左端点升序排列,对于左端点一样的区间我们再按照右端点升序排列;其实对于左端点相同的区间影响答案的只是其中右端点最大的那个区间,我们可以将右端点坐标较小的区间去掉,不过那样操作比较麻烦,就不必去掉他们啦.这点很简单,就不细说了;

假设我们将排序后的数据存储到gg结构体数组中,我们先令end=gg[0].right, ans=0,ans存储但前最大公共区间值;那么在gg[0]后面的区间与gg[0]有三种关系:

1:gg[i].left>end, 即gg[i]与gg[0]不相交.此时我们要更新end=gg[i].end,因为我们是按照left升序怕排列gg的,所以在当前情况下gg[0]后面的区间都不会与gg[0]相交啦;

2:gg[i].left<end,此种情况根据gg[i].right的大小又可以细分两种情况:

  a: gg[i].right<end, 此时我们需要检查是否要更新ans, ans=max(ans, end-gg[i].left);

  B: gg[i].right>=end,此时我们不仅要更新ans, 还要更新end, end=gg[i].right;

如此遍历完gg数组,ans就是我们要的答案啦;

代码:

 #include <bits/stdc++.h>
#define MAXN 50010
using namespace std; struct node{
int left, right;
}; bool cmp(node a, node b){
return a.left==b.left?a.right<b.right:a.left<b.left;
} int main(void){
int n;
node gg[MAXN];
cin >> n;
for(int i=; i<n; i++){
cin >> gg[i].left >> gg[i].right;
}
sort(gg, gg+n, cmp);
int ans=, end=gg[].right;
for(int i=; i<n; i++){
if(gg[i].left<end){
if(gg[i].right<end){
ans=max(ans, gg[i].right-gg[i].left);
}else{
ans=max(ans, end-gg[i].left);
end=gg[i].right;
}
}else{
end=gg[i].right;
}
}
cout << ans << endl;
return ;
}

51nod1091(贪心)的更多相关文章

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

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

  2. 【51nod-1091】线段的重叠(贪心)

    所有线段按起点从小到大排序,然后比较出最大的重叠部分.比如第i条线段和第j条线段进行比较找出重叠部分(j>i),当第j条线段的右端点<第i条线段的右端点,此时可以让i继续比较后面的线段:如 ...

  3. BZOJ 1692: [Usaco2007 Dec]队列变换 [后缀数组 贪心]

    1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1383  Solved: 582[Submit][St ...

  4. HDOJ 1051. Wooden Sticks 贪心 结构体排序

    Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  5. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  6. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]

    1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 786  Solved: 391[Submit][S ...

  7. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  8. 【BZOJ-4245】OR-XOR 按位贪心

    4245: [ONTAK2015]OR-XOR Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 486  Solved: 266[Submit][Sta ...

  9. code vs 1098 均分纸牌(贪心)

    1098 均分纸牌 2002年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解   题目描述 Description 有 N 堆纸牌 ...

随机推荐

  1. IBM V3500存储恢复步骤实例(linux)

    本环境是一有台IBM3500存储,将存储挂载至linux的/data目录,模拟测试当主服务器挂了,将数据恢复到另一台服务器,存储有两个地址,我配置的是192.168.80.59是用于web管理,192 ...

  2. Appium-xpath详解

    一.xpath简介 XPath就是XML 路径,练习XPath的使用可以直接使用火狐浏览器 火狐浏览器下载 free bug和free path两个插件. 手机xpath可以自己写,路径关键字选cla ...

  3. Selenium-一组元素的定位

    一组元素的定位: 有时候我们可能需要定位一组元素,比如一组checkbox,这时候要实现的思路大概为: 先把一组元素识别出来,然后定位你需要的元素 下面是查找多个元素(这些方法将返回一个列表): 方法 ...

  4. 201621123014《Java程序设计》第三周学习总结

    <Java程序设计>第三周实验报告 1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识 ...

  5. ONTAK2010 Peaks加强版

    给一个图,每个点有点权,$q$ 次询问从 $x$ 开始只走点权小于等于 $y$ 的路径能到的点中第 $k$ 大的点权,无解输出 -1 强制在线 请注意因为这个 sb 博主为了描述方便,这里的题目描述用 ...

  6. bzoj 4822~4824 CQOI2017题解

    老C的任务 题目大意: 维护一个二维平面,初始给出一些点及其权.多次询问某个矩形内的权和. n,m <= 100000 题解: 签到题. CDQ水一水. #include <cstdio& ...

  7. bzoj 4540: [Hnoi2016]序列 莫队

    题目: 给定长度为n的序列:a1,a2,-,an,记为a[1:n].类似地,a[l:r](1≤l≤r≤N)是指序列:al,al+1,-,ar- 1,ar.若1≤l≤s≤t≤r≤n,则称a[s:t]是a ...

  8. Javascript常用的设计模式详解

    Javascript常用的设计模式详解 阅读目录 一:理解工厂模式 二:理解单体模式 三:理解模块模式 四:理解代理模式 五:理解职责链模式 六:命令模式的理解: 七:模板方法模式 八:理解javas ...

  9. Azure自动化部署服务 (2)

    上一篇文章介绍了如何通过添加用户名和密码的方式实现自动化部署服务中与Azure Subscription的连接. 本文将介绍如何使用证书的方式实现Azure Automation与Azure的Subs ...

  10. QTP使用outlook发送邮件

    '发邮件 Dim objOutlook  Dim objOutlookMsg Dim olMailItem  ' Create the Outlook object and the new mail ...