51 Nod 1091 线段的重叠 (贪心算法)
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1091
思路分析:通过读题不难发现这是一道涉及贪心算法的题,刚开始上手做也是摸不着头脑。首先把所有的线段按起点由小到大进行排序,比如(1,5),(2,4),(2,8),(3,7),(7,9), 然后进行比较,每次比较保留最大的末尾数字,最终结果就是 max(min(最大末尾数字,本次末尾数字)- 本次起始数字,上次的比较结果);
举个栗子:
/*
1 5
2 4
2 8
3 7
7 9
*/
// 第一次
Max = 5, ans = 0;
// 第二次
Max = 5, ans = 4 - 2 = 2
// ans = max(min(5, 4) - 2, 0) = 4
// 第三次
Max = 8, ans = 5 - 2 = 3
// Max = max(5, 8) = 8, ans = max(min(5, 8) - 2, 2) = 3
// 第四次
Max = 8, ans = 7 - 3 = 4
// ans = max(min(8, 7) - 3, 3) = 4
// 第五次
Max = 8, ans = 4
代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int, int> P;
const int MAX = 50000;
P a[MAX];
int n;
int main() {
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i].first >> a[i].second;
sort(a, a+n);
int Max = a[0].second, ans = 0;
for (int i = 1; i < n; i++) {
ans = max(min(Max, a[i].second) - a[i].first, ans);
Max = max(Max, a[i].second);
}
cout << ans << endl;
return 0;
}
51 Nod 1091 线段的重叠 (贪心算法)的更多相关文章
- 51 Nod 1091 线段的重叠
2017-09-24 19:51:41 writer:pprp 上一个题目就是关于线段重叠最大值,这个是找区间最长重合? 给你n个线段,然后让你在其中选择两条,使两条尽可能重合多一点 解决方法; 1. ...
- 51Nod 1091 线段的重叠(贪心+区间相关,板子题)
1091 线段的重叠 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 2 ...
- 51Nod 1091 线段的重叠(贪心+区间相关
1091 线段的重叠 X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]. 给出N条线段的起点和终点,从中选出2条线段,这两 ...
- [51nod] 1091 线段的重叠 贪心
X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]. 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长 ...
- 51 nod 1091 贪心
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1091 1091 线段的重叠 基准时间限制:1 秒 空间限制:131072 ...
- 51nod 1091 线段的重叠【贪心/区间覆盖类】
1091 线段的重叠 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 2 ...
- 51 nod 1023 石子归并 V3(GarsiaWachs算法)
1023 石子归并 V3基准时间限制:2 秒 空间限制:131072 KB 分值: 320 难度:7级算法题 N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一 ...
- 51Nod 1091 线段的重叠 (贪心)
X轴上有N条线段,每条线段包括1个起点和终点.线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]. 给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长 ...
- 【51nod-1091】线段的重叠(贪心)
所有线段按起点从小到大排序,然后比较出最大的重叠部分.比如第i条线段和第j条线段进行比较找出重叠部分(j>i),当第j条线段的右端点<第i条线段的右端点,此时可以让i继续比较后面的线段:如 ...
随机推荐
- 【划重点】Python xlrd简介
一.用xlrd获取对应数据,并获取所有sheet的名字 import xlrd data=xlrd.open_workbook(r'C:\Users\ASUS\Desktop\重新开始\Python获 ...
- IO中同步异步,阻塞与非阻塞 -- 通俗篇
一.同步与异步 同步/异步, 它们是消息的通知机制 1. 概念解释 A. 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例 ...
- [BUUCTF]REVERSE——[2019红帽杯]easyRE
[2019红帽杯]easyRE 附件 步骤: ida载入,没有main函数,就先检索了程序里的字符串 发现了base64加密的特征字符串,双击you found me跟进,找到了调用它的函数,函数很长 ...
- 返回记录中的指定内容Record.Field…(Power Query 之 M 语言)
返回指定字段: = Record.Field( 记录, "字段名") = Record.FieldOrDefault( 记录, "字段名", 找不到时返回的值) ...
- Indirect函数(Excel函数集团)
此处文章均为本妖原创,供下载.学习.探讨! 文章下载源是Office365国内版1Driver,如有链接问题请联系我. 请勿用于商业!谢谢 下载地址:https://officecommunity-m ...
- 解析Redis操作五大数据类型常用命令
摘要:分享经常用到一些命令和使用场景总结,以及对Redis中五大数据类型如何使用cmd命令行的形式进行操作的方法. 本文分享自华为云社区<Redis操作五大数据类型常用命令解析>,作者:灰 ...
- ELK部署笔记
ELK安装准备工作 准备3台机器,这样才能完成分布式集群的实验,当然能有更多机器更好: 192.168.0.46 192.168.0.150 192.168.0.76 角色划分: 3台机器全部安装jd ...
- 【LeetCode】1436. 旅行终点站 Destination City (Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 set 日期 题目地址:https://leetcod ...
- 【经验】 Java BigInteger类以及其在算法题中的应用
[经验] Java BigInteger类以及其在算法题中的应用 标签(空格分隔): 经验 本来在刷九度的数学类型题,有进制转换和大数运算,故而用到了java BigInteger类,使用了之后才发现 ...
- 【LeetCode】844. Backspace String Compare 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字符串切片 栈 日期 题目地址:https://le ...