51nod1091(贪心)
题目链接: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(贪心)的更多相关文章
- (贪心 区间) 51nod1091 线段的重叠
X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]. 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长 ...
- 【51nod-1091】线段的重叠(贪心)
所有线段按起点从小到大排序,然后比较出最大的重叠部分.比如第i条线段和第j条线段进行比较找出重叠部分(j>i),当第j条线段的右端点<第i条线段的右端点,此时可以让i继续比较后面的线段:如 ...
- BZOJ 1692: [Usaco2007 Dec]队列变换 [后缀数组 贪心]
1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1383 Solved: 582[Submit][St ...
- HDOJ 1051. Wooden Sticks 贪心 结构体排序
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]
1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 786 Solved: 391[Submit][S ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【BZOJ-4245】OR-XOR 按位贪心
4245: [ONTAK2015]OR-XOR Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 486 Solved: 266[Submit][Sta ...
- code vs 1098 均分纸牌(贪心)
1098 均分纸牌 2002年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有 N 堆纸牌 ...
随机推荐
- NFL原则告诉我们做决策的时候,试图找到一个能解决所有问题,“大而全”的方案是不存在的。我们应当找到最关心的问题,因地制宜做出选择。——聚焦目标,取舍有道!
资源匮乏原则:有限的资源无法满足无穷的需要及欲望:因此想要多一点的某件东西,意味着必须放弃一些其他的东西:因为资源匮乏,所以我们必须做出选择. NFL原则:没有免费午餐定理(No Free Lunch ...
- Spring源码分析_01_ idea搭建spring源码阅读环境
二.参考资料 1.Intellij Idea如何导入spring源码
- 关于MFC资源句柄、ID和对象
一.资源.句柄和ID 资源: MFC中的资源,如菜单.对话框.图标.工具条.对话框等,是windows创建的,并占用堆内存.windows在创建这些资源时候会给每个资源分配一个句柄,用来标记这些资源, ...
- Python解决中文字符的问题
from __future__ import unicode_literals print(type("test")) #<type 'unicode'> Chinat ...
- ACM学习历程—HDU5637 Transform(数论 && 最短路)
题目链接:http://codeforces.com/problemset/problem/590/A 题目大意是给两种操作,然后给你一个s,一个t,求s至少需要多少次操作到t. 考虑到第一种操作是将 ...
- ACM学习历程—HDU5407 CRB and Candies(数论)
Problem Description CRB has N different candies. He is going to eat K candies.He wonders how many co ...
- 手动导入XMPPFramework框架
环境: Xcode 8.2.1 XMPPFramework 3.6.5 (下载地址) Objective-C (项目使用的语言,最新版的3.7.0要求convert to swift) 1.下载XMP ...
- NSArray用法
//类方法初始化一个数组对象 [array count] : 得到这个数组对象的长度. [array objectAtIndex index]: 传入数组的索引(index) 得到数据对象. [arr ...
- hive 集群初探,查询比较
在slave3安装MySQL作为hive 的matastore [root@slave3 hadoop]# yum search mysql [root@slave3 hadoop]# yum ins ...
- macOS 安装 Docker
系统要求 Docker for Mac 要求系统最低为 macOS 10.10.3 Yosemite,或者 2010 年以后的 Mac 机型,准确说是带 Intel MMU 虚拟化的,最低 4GB 内 ...