Problem Description
请编程完成以下任务:
1.从文件中读取闭区间的个数及它们的描述;
2.找到一个含元素个数最少的集合,使得对于每一个区间,都至少有一个整数属于该集合,输出该集合的元素个数。
1.从文件中读取闭区间的个数及它们的描述;
2.找到一个含元素个数最少的集合,使得对于每一个区间,都至少有一个整数属于该集合,输出该集合的元素个数。
Input
输入有多组数据,每组数据的首行包括区间的数目n,1<=n<=10000,接下来的n行,每行包括两个整数a,b,被一空格隔开,0<=a<=b<=10000,它们是某一个区间的开始值和结束值。
Output
对于每组数据找到对于每一个区间都至少有一个整数属于该区间,且集合所包含元素数目最少,输出该集合的元素个数。
Sample Input
4 3 6 2 4 0 2 4 7
Sample Output
2
//关键字:形成一个没交集的连续区间集合
//标程:
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; class interver { public: int left; int right; }; interver interver_set[10010]; bool cmp(interver interver_1, interver interver_2) { return interver_1.right < interver_2.right; } int main() { /// freopen("a.txt","r",stdin); int T,i; while(cin >> T) { for(i = 0 ; i < T ; i ++) cin >> interver_set[i].left >> interver_set[i].right; sort(interver_set,interver_set + T, cmp); int cnt = 1; int temp = interver_set[0].right; for(i = 1; i < T; i ++) { if( temp < interver_set[i].left ) { cnt++; temp = interver_set[i].right; } } cout << cnt << endl; } return 0; }