问题 K: 找点

题目描述

上数学课时,老师给了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 
 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
", ans);
30     }
31     return 0;
32 }
View Code
原文地址:https://www.cnblogs.com/tong69/p/5802152.html