最大不相交区间数

# 题意
N个闭区间[ai,bi],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。
输出可选取区间的最大数量。

# 题解
1.将每个区间按照右端点从小到大排序
2.从前往后依次枚举每个区间
如果当前区间已经包含点pass
否则选择当前区间的右端点
因为是右端点从小到大易知正确

 1 #include <bits/stdc++.h>
 2 #define PII pair<int,int>
 3 using namespace std;
 4 const int N=1e5+10;
 5 PII a[N];
 6 int main(){
 7     int n,ans=1;
 8     scanf("%d",&n);
 9     for(int i=0;i<n;i++)
10         scanf("%d%d",&a[i].second,&a[i].first);
11     sort(a,a+n);
12     int loca=a[0].first;
13     for(int i=1;i<n;i++){
14         if(a[i].second<=loca&&loca<=a[i].first) continue;
15         else{
16             ans++;
17             loca=a[i].first;
18         }
19     }
20     printf("%d\n",ans);
21 }

原文地址:https://www.cnblogs.com/hhyx/p/12543588.html

时间: 2024-10-12 13:37:25

最大不相交区间数的相关文章

最大不相交区间数+最少区间数覆盖问题 贪心思想

最大不相交区间数的一道题是hdu2037 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2037 题目给出n个区间,问最多有多少个区间没有重叠,只需要对区间右端点进行排序就行,因为一个节目结束得早的话就会为其他节目留下更多的时间,如果选择对节目的开始时间进行排序的话就会导致有一个节目迟迟不结束使得其他节目又没法开始的现象.右端点最小的第一个区间时一定要选的.这个可以简单地将其他右端值更大的区间跟他交换,就会发现不会产生更多的区间数,只会小于等于我们

ACM知识点 之 贪心(2)选择不相交区间

转载地址:http://blog.csdn.net/liuxucoder 之前基本了解了贪心的基本思想,现在我们来看一下比较经典的几个贪心问题. 这篇文章讨论的是"选择不相交区间",具体什么意思,我们同样先看一道题. 题目来源:NYOJ 14 会场安排问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4(这个难度真的很唬人~~) 描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工作就是安排学校小礼堂的活动,

HDU 4343 多查询求区间内的最大不相交区间个数-思维&amp;贪心-卡时间&amp;二分&amp;剪枝

题意:给你一些区间,现在有m个查询,求出每个查询的区间内的最大的不相交区间个数 分析: 几天前那道说谎问题时用dp的摞箱子模型求的最大的不相交区间个数,但是这题不能用这个方法,因为这题是动态的查询,不可能每个查询dp一次,超时. 这题用贪心策略.求区间[l~r]里的最大不相交区间,贪心策略就应该先选该区间内右端点最小的,这样给以后待选的区间留下更大的空间,所以我们的做法就是先按照区间的右端点排序,然后每次查询依次挑出查询区间里右端点最小的,并且把查询区间的左端点更新为刚才挑出的区间的右端点(这个

连号区间数

*/--> pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} 连号区间数 问题描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在 1~N 的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第 L 个到第 R 个元素)递增排序后能得到一个长度为 R-L+1 的"连续"数列,

蓝桥杯 - 连号区间数 (历届试题!)

连号区间数 时间限制:1.0s   内存限制:256.0MB 问题描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为R-L+1的"连续"数列,则称这个区间连号区间. 当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就不是那么简单了,现在小明需要你的帮助. 输入格式 第一行是一个正整数N (1 <=

【蓝桥杯】历届试题 连号区间数(运行超时)

  历届试题 连号区间数   时间限制:1.0s   内存限制:256.0MB 问题描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为R-L+1的“连续”数列,则称这个区间连号区间. 当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就不是那么简单了,现在小明需要你的帮助. 输入格式 第一行是一个正整数N (1 <=

【蓝桥杯】连号区间数

小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为R-L+1的"连续"数列,则称这个区间连号区间. 当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就不是那么简单了,现在小明需要你的帮助. 输入格式: 第一行是一个正整数N (1 <= N <= 50000), 表示全排列的规模. 第二行是N个不同的

蓝桥杯 历届试题 连号区间数

历届试题 连号区间数 时间限制:1.0s   内存限制:256.0MB 问题描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为R-L+1的"连续"数列,则称这个区间连号区间. 当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就不是那么简单了,现在小明需要你的帮助. 输入格式 第一行是一个正整数N (1 &

蓝桥杯 - 连号区间数

历届试题 连号区间数 时间限制:1.0s   内存限制:256.0MB 锦囊1 并查集. 锦囊2 从左到右扫描数组,将所有扫描到的数放到并查集中,将相邻的数在集合中合并.对于每个合并的集合记录下递增可连的次数和递减可连的次数以及数字出现的最早和最晚时刻.当新扫描的数过来时根据以上几个值来合并区间并维护. 问题描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素