51nod 1428 活動安排問題

2021-08-04 08:08:32 字數 505 閱讀 3320

正如討論裡說的:把線段轉化成乙個入點和一點出點,這樣存下2*n個點,之後按座標從小到大給這2*n個點排序,之後o(n)遍歷一遍就好,遇到入點sum++, 遇到出點sum–,遍歷時最大的sum便是答案,算上排序複雜度穩定nlogn(注意:排序時座標相同的點出點優先)

#include 

using namespace std;

struct action

;const

int maxn = 20010;

action as[maxn];

bool cmp(action a1, action a2)

int main()

sort(as,as+2*n,cmp);

int res = 1;

int sum = 1;

for(int i = 1; i < 2*n; ++i)

cout << res << endl;

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...