问题 K: 找点
题目描述
上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点。但是这几天LYH太忙了,你们帮帮他吗?
输入
多组测试数据。
每组数据先输入一个N,表示有N个闭区间(N≤100)。
接下来N行,每行输入两个数a,b(0≤a≤b≤100),表示区间的两个端点。
每组数据先输入一个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 4 using namespace std; 5 struct st { 6 int l, r; 7 }date[101]; 8 9 int cmp(st x,st y) { 10 if(x.r != y.r) 11 return x.r < y.r; 12 return x.l < y.l; 13 } 14 15 int main( ) { 16 int n; 17 while(scanf("%d", &n) != EOF) { 18 for(int i = 0; i < n; i ++) 19 scanf("%d%d", &date[i].l, &date[i].r); 20 sort(date, date + n, cmp); 21 int ans = 1; 22 int k = date[0].r; 23 for(int j = 1; j < n;j ++) { 24 if(date[j].l>k) { 25 k = date[j].r; 26 ans ++; 27 } 28 } 29 printf("%d\n", ans); 30 } 31 return 0; 32 }