會場安排問題--nyoj題目14


會場安排問題

時間限制:3000 ms  |  內存限制:65535 KB 難度:4  
描述
學校的小禮堂每天都會有許多活動,有時間這些活動的計划時間會發生沖突,需要選擇出一些活動進行舉辦。小劉的工作就是安排學校小禮堂的活動,每個時間最多安排一個活動。現在小劉有一些活動計划的時間表,他想盡可能的安排更多的活動,請問他該如何安排。
 
輸入
第一行是一個整型數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時間開始
這個和杭電2037是一個類型的題不多解釋了,可以去看我的2037hdu很詳細!
 1 #include<cstdio>
2 #include<cstring>
3 #include<algorithm>
4 using namespace std;
5
6 struct as
7 {
8 int begin;
9 int end;
10 }aa[10010];
11
12 bool cmp(as x,as y)
13 {
14 return x.end<y.end;
15 }
16
17 int main()
18 {
19 int N,i,n;
20 scanf("%d",&N);
21 while(N--)
22 {
23 scanf("%d",&n);
24 for(i=0;i<n;i++)
25 scanf("%d%d",&aa[i].begin,&aa[i].end);
26 sort(aa,aa+n,cmp);
27 int cot=1,tim=aa[0].end;
28 for(i=1;i<n;i++)
29 {
30 if(aa[i].begin>tim)
31 {
32 tim=aa[i].end;
33 cot++;
34 }
35 }
36 printf("%d\n",cot);
37 }
38 return 0;
39 }

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com