描述
给定N个闭区间[l,r],请在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出所选点的最小数量。
注意:位于区间端点上的点也算作区间内。
输入描述
第一行一个整数N,表示闭区间数量(1≤N≤105)。
接下来N行,每行两个整数l,r,分别表示一个区间的左端点和右端点(−109≤l≤r≤109)。
输出描述
输出一个整数,表示所选点的最小数量。
样例输入 1
5 0 3 1 2 -1 2 0 1 4 5
样例输出 1
2
代码:
#include <bits/stdc++.h>
using namespace std;
struct m{
int l,r;
}a[1000005];
bool cmp(m x,m y){
return x.r<y.r;
}
int main(){
int n,ans=1;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].l>>a[i].r;
}
sort(a+1,a+1+n,cmp);
int r=a[1].r;
for(int i=2;i<=n;i++){
if(r<a[i].l){
ans++;
r=a[i].r;
}
}
cout<<ans;
return 0;
}
以上内容均为原创;欢迎参考、借鉴!
但拒绝盗版;也禁止任何人在未经本人同意的条件下用于商业用途。
作者保留法律追究责任。