1. 程式人生 > >【例6.5】活動選擇

【例6.5】活動選擇

node ret ring 安排 一行 php urn 描述 algo

【例6.5】活動選擇

鏈接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1323
時間限制: 1000 ms 內存限制: 65536 KB

【題目描述】

學校在最近幾天有n個活動,這些活動都需要使用學校的大禮堂,在同一時間,禮堂只能被一個活動使用。由於有些活動時間上有沖突,學校辦公室人員只好讓一些活動放棄使用禮堂而使用其他教室。

  現在給出n個活動使用禮堂的起始時間begini和結束時間endi(begini < endi),請你幫助辦公室人員安排一些活動來使用禮堂,要求安排的活動盡量多。

【輸入】

第一行一個整數n(n<=1000);

接下來的n行,每行兩個整數,第一個begini,第二個是endi(begini< endi <=32767)。

【輸出】

輸出最多能安排的活動個數。

【輸入樣例】

11
3 5
1 4
12 14
8 12
0 6
8 11
6 10
5 7
3 8
5 9
2 13

【輸出樣例】

4
題解:按結束時間排序能在結束前多選就多選
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
struct node{
    
int st,ed; }; node p[1005]; bool cmp(node A,node B) { if(A.ed==B.ed)return A.st<B.st; return A.ed<B.ed; } int main() { int n,ans=1; cin>>n; for(int i=1;i<=n;i++)cin>>p[i].st>>p[i].ed; sort(p+1,p+1+n,cmp); int t=p[1].ed; for(int i=2;i<=n;i++)
if(p[i].st>=t) { ans++;t=p[i].ed; } cout<<ans<<endl; }

【例6.5】活動選擇