找点
时间限制:
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
-
多组测试数据。
-
-
#include <iostream> #include <algorithm> using namespace std; struct Point { int a, b; }p[101]; bool cmp(const Point& p1, const Point& p2) { if(p1.b < p2.b) return true; if(p1.b == p2.b && p1.a > p2.a) return true; return false; } int main() { int n; while(cin >> n) { for(int i = 0; i < n; i++) cin >> p[i].a >> p[i].b; sort(p, p + n, cmp); int count = 1, t = p[0].b; for(int j = 1; j < n; j++) { if(t < p[j].a) { t = p[j].b; count++; } } cout << count << endl; } return 0; }
-