描述
學校的小禮堂每天都會有許多活動,有時間這些活動的計劃時間會發生衝突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排一個活動。現在小劉有一些活動計劃的時間表,他想儘可能的安排更多的活動,請問他該如何安排。
輸入
第一行是一個整型數m(m<100)表示共有m組測試數據。
每組測試數據的第一行是一個整數n(1<n<10000)表示該測試數據共有n個活動。
隨後的n行,每行有兩個正整數Bi,Ei(0<=Bi,Ei<10000),分別表示第i個活動的起始與結束時間(Bi<=Ei)
輸出
對於每一組輸入,輸出最多能夠安排的活動數量。
每組的輸出佔一行
樣例輸入
2
2
1 10
10 11
3
1 10
10 11
11 20
樣例輸出
1
2
提示
注意:如果上一個活動在t時間結束,下一個活動最早應該在t+1時間開始
-----------------------------------------------------------------------------------------------------------------------------------------
簡單貪心;
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
struct node
{
int start,end;
}a[10100];
int cmp(node a,node b)
{
return a.end < b.end;
}
int main()
{
int t,n;
int i,cont;
int s,d;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d%d",&a[i].start,&a[i].end);
//qsort(a,n,sizeof(a[0]),cmp);
sort(a,a+n,cmp);
cont=1;s=a[0].start;d=a[0].end;
for(i=1;i<n;i++)
{
if(a[i].start>d)
{
s = a[i].start;// s可以去掉
d = a[i].end;
cont++;
}
}
printf("%d\n",cont);
}
return 0;
}