找点
时间限制:2000 ms | 内存限制:65535 KB
难度:2
- 描述
-
上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点。但是这几天LYH太忙了,你们帮帮他吗?
- 输入
- 多组测试数据。
每组数据先输入一个N,表示有N个闭区间(N≤100)。
接下来N行,每行输入两个数a,b(0≤a≤b≤100),表示区间的两个端点。 - 输出
- 输出一个整数,表示最少需要找几个点。
- 样例输入
-
4 1 5 2 4 1 4 2 3 3 1 2 3 4 5 6 1 2 2
- 样例输出
-
1 3 1
1 #include<stdio.h> 2 #include<algorithm> 3 using namespace std; 4 struct point 5 { 6 double s; 7 double e; 8 }a[110]; 9 double cmp(point x,point y) 10 { 11 //if(x.e!=y.e) return x.e<y.e; 12 //else return x.s>y.s; 13 return x.e<y.e; 14 } 15 int main() 16 { 17 int n; 18 while(scanf("%d",&n)!=EOF) 19 { 20 int ans=1; 21 for(int i=0;i<n;i++) 22 { 23 scanf("%lf%lf",&a[i].s,&a[i].e); 24 } 25 sort(a,a+n,cmp); 26 for(int i=0,j=0;i<n;i++) 27 { 28 if(a[i].s>a[j].e) 29 { 30 ans++; 31 j=i; 32 } 33 } 34 printf("%d\n",ans); 35 } 36 return 0; 37 }
时间: 2024-10-10 04:26:01