51nod 1428 互不重疊的線段的組數

2021-07-15 23:29:06 字數 1094 閱讀 3167

有若干個活動,第i個開始時間和結束時間是[si,fi),同乙個教室安排的活動之間不能交疊,求要安排所有活動,最少需要幾個教室?

input

第一行乙個正整數n (n <= 10000)代表活動的個數。

第二行到第(n + 1)行包含n個開始時間和結束時間。

開始時間嚴格小於結束時間,並且時間都是非負整數,小於1000000000

output

一行包含乙個整數表示最少教室的個數。

input示例

3 1 2

3 4

2 9

output示例

2思路:

先排序。

如題,這裡弄個優先佇列(方便找最小終點),儲存終點,然後對每個活動,如果起點大於隊頂的終點時,更新隊頂元素為這個活動的終點,否則就把這個活動的終點直接放進去(相當於多了個教室),然後輸出佇列的size就好了。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define mod 1000000007

#define pi acos(-1.0)

#define inf 0x3f3f3f3f

typedef

long

long ll;

struct nodee[10005];

bool cmp(node a,node b)

sort(e,e+n,cmp);

priority_queue,greater >p;

p.push(e[0].r);

for(int i=1;iif(e[i].l>=p.top())

else p.push(e[i].r);

}cout

0;}

51 Nod1428活動安排

1428 活動安排問題 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 input 第一行乙個正整數n n 10000 代表活動的個數。第二行到第 n 1 行包含n個開始時間和結束時間。開始時間嚴格小於結束時間,並且時間都是非負整數,小於1000000000 ou...

51nod1428 優先佇列

題意 中文題誒 思路 貪心 問最少要多少教室就是求最多有多少個時間段產生了交集咯。我們先用結構體儲存區間並將其按照左端點公升序排列,若左端點相同則按右端點公升序排列。接下來遍歷所有區間,並維護乙個優先佇列,其中儲存區間右端點值。對於當前區間,我們將優先佇列中所有比當前區間左端點小的元素刪除 因為其所...

51nod 1428 (貪心 優先佇列)

input 第一行乙個正整數n n 10000 代表活動的個數。第二行到第 n 1 行包含n個開始時間和結束時間。開始時間嚴格小於結束時間,並且時間都是非負整數,小於1000000000 output 一行包含乙個整數表示最少教室的個數。思路 發現好多貪心的題目都是用優先佇列來解決的。著個題目實際上...