题面 :
题意:
先给你一个大区间,和一些小区间,问最少的小区间个数覆盖掉大区间。
思路:
很典型贪心。
代码
#include<bits/stdc++.h>
using namespace std;
struct node{
int s,t;
}a[100000+10];
bool cmp(node a,node b){
return a.s == b.s ? a.t<b.t : a.s<b.s;
}
int main(){
int n,x,y;
while(~scanf("%d%d%d",&n,&x,&y)){
for(int i=0;i<n;i++)
scanf("%d %d",&a[i].s,&a[i].t);
sort(a,a+n,cmp);
int ans = 0;
int l = x, r = x;
for(int i=0;i<n;i++){
if(a[i].s<=l){
r = max(r, a[i].t);
if(r>=y){
ans++; break;
}
}
else{
ans +=1;
l = r;
}
}
if(r<y) printf("-1\n");
else printf("%d\n",ans);
}
}