1428 活動安排問題
基準時間限制:1 秒 空間限制:131072 kb 分值: 10
難度:2級演算法題
有若干個活動,第i個開始時間和結束時間是[si,fi),同乙個教室安排的活動之間不能交疊,求要安排所有活動,最少需要幾個教室?
input
第一行乙個正整數n (n <= 10000)代表活動的個數。output第二行到第(n + 1)行包含n個開始時間和結束時間。
開始時間嚴格小於結束時間,並且時間都是非負整數,小於1000000000
一行包含乙個整數表示最少教室的個數。input示例
3output示例1 23 4
2 9
2剛剛看到這個題目的時候想著直接暴力,開乙個記錄時間的陣列,結果一看資料範圍就崩了。
這道題可以用優先佇列來做;
1、我們先按照開始時間排序。
2、把第乙個事件的結束時間放入優先佇列(小的優先度高)中。
3、遍歷一遍,如果s[i].s>=q.top(),說明可以共用一間教室,否則更新q.top(),ans++;
#include#include#include#includeusing namespace std;
#define maxn 100050
struct node
num[maxn];
bool cmp(node a,node b)
sort(num,num+n,cmp);
q.push(num[0].e);
int ans=1;
for(int i=1;i=q.top())
else
q.push(num[i].e);
} cout<
return 0;
}
51nod 1428 活動安排問題
1428 活動安排問題 有若干個活動,第i個開始時間和結束時間是 si,fi 同乙個教室安排的活動之間不能交疊,求要安排所有活動,最少需要幾個教室?input 第一行乙個正整數n n 10000 代表活動的個數。第二行到第 n 1 行包含n個開始時間和結束時間。開始時間嚴格小於結束時間,並且時間都是...
51Nod 1428 活動安排問題
acm模版 將所有開始時間和結束時間存入乙個陣列內,然後排序,最後從頭至尾遍歷,初始化flag 0,遇見開始時間則flag 反之則更新res並flag include include include using namespace std const int maxn 1e4 10 struct p...
51nod 1428 活動安排問題
有若干個活動,第i個開始時間和結束時間是 si,fi 同乙個教室安排的活動之間不能交疊,求要安排所有活動,最少需要幾個教室?input 第一行乙個正整數n n 10000 代表活動的個數。第二行到第 n 1 行包含n個開始時間和結束時間。開始時間嚴格小於結束時間,並且時間都是非負整數,小於10000...