无重叠区间(c++题解)

题目描述

题目描述

给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。

输入格式

第一行有一个数字n,表示区间的数量

接下来有n行,每行两个数字表示区间的[starti, endi]

输出格式

输出一个整数,表示 需要移除区间的最小数量

样例

复制4
1 2
2 3
3 4
1 3
复制1

样例说明1

移除 [1,3] 后,剩下的区间没有重叠。

复制3
1 2
1 2
1 2
复制2

样例说明2

你需要移除两个 [1,2] 来使剩下的区间没有重叠。

复制2
1 2
2 3
复制0

样例说明3

你不需要移除任何区间,因为它们已经是无重叠的了。

数据范围与提示

  • 1 \le n \le 10^5

    -510^4 \le starti < endi \le 510^4

____________________________________________________________________________
日常发作业题解。 

也是简单到爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆表的题

写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

____________________________________________________________________________

#include 
using namespace std;
struct node{
	int l,r;
}a[1000005];
bool cmp(node x,node y){
	return x.r>n;
    for(int i=1;i<=n;i++)
	cin>>a[i].l>>a[i].r;
    sort(a+1,a+1+n,cmp);
    int ans=1,R=a[1].r;
    for(int i=2;i<=n;i++)
	if(a[i].l>=R)ans++,R=a[i].r;
    cout<

你可能感兴趣的:(c++,算法,数据结构)