正如討論裡說的:把線段轉化成乙個入點和一點出點,這樣存下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...