NYOJ- 找点
找点
时间限制: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 <iostream> 3 #include <algorithm> 4 using namespace std; 5 pair<double,double> d[105]; 6 int comp(pair<double,double> a,pair<double,double> b){ 7 return a.second < b.second; 8 } 9 int main(void){ 10 int n,dot,ans; 11 while(scanf("%d",&n) != EOF){ 12 ans = 0; 13 for(int i = 0; i < n; i++) 14 scanf("%lf%lf",&d[i].first,&d[i].second); 15 sort(d,d+n,comp); 16 dot = d[0].second; 17 int i = 0;///第i个线段 18 while(i < n){///检查每一个线段 19 ///查找包含dot的线段,并跳过 20 while(dot >= d[i].first && dot <= d[i].second){ 21 i++; 22 } 23 ans++; 24 dot = d[i].second; 25 } 26 printf("%d\n",ans); 27 } 28 return 0; 29 }