给定N个闭区间[ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。
输出选择的点的最小数量。
位于区间端点上的点也算作区间内。
第一行包含整数N,表示区间数,1≤N≤10^5。
接下来N行,每行包含两个整数ai,bi(−10^9≤ai≤bi≤10^9),表示一个区间的两个端点。
输出一个整数,表示所需的点的最小数量。
- 3
- -1 1
- 2 4
- 3 5
2
//和h0215.闭区间问题都是一样的,少了交换步骤而已
- #include<bits/stdc++.h>
- using namespace std;
- struct xx{
- int a,b;
- }s[40005];
- int cmp(xx x,xx y){
- if(x.b==y.b)return x.a<y.a;
- return x.b<y.b;
- }
- int main(){
- int n,c=0,j=0;
- cin>>n;
- for(int i=0;i<n;i++){
- cin>>s[i].a>>s[i].b;
- }
- sort(s,s+n,cmp);
- c+=1;
- for(int i=1;i<n;i++){
- if(s[i].a>s[j].b){
- c++;
- j=i;
- }
- }
- cout<<c;
- return 0;
- }