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 堆纸牌 ...
随机推荐
- 自定义响应结构 AjaxResult()
package com.dsj.gdbd.utils.ajax; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxm ...
- Python调试时__name__ =='__main__'的妙用
# python 文件自己运行,__name__的值就会等于__main__# 别的文件导入执行时,变成了导入文件的名字 例如: niuniu.py文件中,文件自己执行时,__name__的值就是__ ...
- YNOI2016 这是我自己的发明
看到这个标题立刻想到:. “绝地科学家,八倍不屏息啊,八百里外把头打啊...” 首先我们发现如果只考虑第二个操作,这棵树就是假的,我们可以直接莫队解决 如果考虑换根的话...可以把一个操作换成小于等于 ...
- P1030 求先序排列
题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...
- Ubuntu下locale文件
March 7, 2015 11:44 PM locale文件 关于locale文件的设定 locale 是国际化与本土化过程中的一个非常重要的概念,个人认为,对于中文用户来说,通常会涉及到的国际化或 ...
- Nested loops、Hash join、Sort merge join(三种连接类型原理、使用要点)
nested loop 嵌套循环(原理):oracle从较小结果集(驱动表.也可以被称为outer)中读取一行,然后和较大结果集(被侦查表,也可以叫做inner)中的所有数据逐条进行比较(也是等值连接 ...
- HDOJ1059(多重部分和问题)
#include<cstdio> #include<cstring> using namespace std; +; ]; int dp[SIZE]; bool check() ...
- DCloud-MUI:Hello mui
ylbtech-DCloud-MUI:Hello mui MUI-最接近原生App体验的前端框架 1. 返回顶部 1. MUI-最接近原生App体验的前端框架 极小 100k的js文件,60k的css ...
- jquery easyui 推荐博客 (MVC+EF+EasyUI+Bootstrap)
构建ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统(52)-美化EasyUI皮肤和图标 系列目录 我很久以前就想更新系统的皮肤功能,Easyui 自 ...
- 伪分布模式 hive查询
[root@node1 ~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian ...