51nod 1428 (貪心 優先佇列)

2021-07-11 01:35:53 字數 802 閱讀 7050

input

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

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

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

output

一行包含乙個整數表示最少教室的個數。
思路:發現好多貪心的題目都是用優先佇列來解決的。。。。

著個題目實際上就是求很多區間當中最大的重疊部分的區間個數。就是因為想到這裡以為是直接貪心,想了好久發現並沒有什麼好的方法去實現。然後看了一下之前寫的貪心題目就想到了優先佇列。  按照結束時間最小值優先的策略就可以很輕鬆的解決這個題目。

#include #include #include #include #include #include using namespace std;

#define inf 1000000005

#define ll long long

int const maxn = 10005;

struct node

}a[maxn];

bool cmp(node a,node b)

{ if(a.s!=b.s)return a.sq;

while(!q.empty())q.pop();

q.push(a[0]);

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

{node temp = q.top();

q.pop();

if(a[i].s

51nod1428 優先佇列

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

51nod 1428 活動安排問題(優先佇列)

1428 活動安排問題 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 有若干個活動,第i個開始時間和結束時間是 si,fi 同乙個教室安排的活動之間不能交疊,求要安排所有活動,最少需要幾個教室?input 第一行乙個正整數n n 10000 代表活動的個數。第二...

51nod1428活動安排問題(貪心 優先佇列)

活動安排問題 51nod 1428 input第一行乙個正整數n n 10000 代表活動的個數。第二行到第 n 1 行包含n個開始時間和結束時間。開始時間嚴格小於結束時間,並且時間都是非負整數,小於1000000000output一行包含乙個整數表示最少教室的個數。sample input 3 1...