活动选择
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 2 Accepted Submission(s) : 2
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
假设有一个需要使用某一资源的n个活动组成的集合S,S={1,……,n}。该资源一次只能被一个活动所占用,每一个活动有一个开始时间bi和结束时间ei (bi≤ei)。若bi≥ej或者bj≥ei,则活动i和活动j兼容。
你的任务是:求互相兼容的活动的最大数量。
你的任务是:求互相兼容的活动的最大数量。
Input
输入有多组测试数据,每组测试数据的第一行是活动数量n(n<=1000),后n行每行有两个数,分别为bi和ei。
Output
互相兼容的活动的最大数量。
Sample Input
11 3 5 1 4 12 14 8 12 0 6 8 11 6 10 5 7 3 8 5 9 2 13
Sample Output
4
#include<iostream>
#include<algorithm>
using namespace std;
struct lmx{
int s;
int e;
};
lmx lm[1010];
bool gcd(lmx s1,lmx s2)
{
return s1.e<s2.e;
}
int main()
{
int n,i,cnt,x;
while(cin>>n)
{
cnt=1;
for(i=0;i<n;i++)
{
cin>>lm[i].s>>lm[i].e;
}
sort(lm,lm+n,gcd);
x=lm[0].e;
for(i=1;i<n;i++)
{
if(lm[i].s>=x) {cnt++;x=lm[i].e;}
}
cout<<cnt<<endl;
}
return 0;
}