題意:中文題誒~
思路:貪心
問最少要多少教室就是求最多有多少個時間段產生了交集咯。我們先用結構體儲存區間並將其按照左端點公升序排列,若左端點相同則按右端點公升序排列。
接下來遍歷所有區間,並維護乙個優先佇列,其中儲存區間右端點值。對於當前區間,我們將優先佇列中所有比當前區間左端點小的元素刪除(因為其所在區間不會與當前區間相交嘛),然後再將當前區間的右端點加入優先佇列。當前優先佇列的大小就是當前能得到的最大交集數。其中道理並不複雜就不多說啦。。。
**:
1 #include 2#define maxn 10010
3using
namespace
std;45
struct
nodegg[maxn];89
intcmp(node a, node b)
1213
int main(void
)19 sort(gg, gg+n, cmp);
20 priority_queue, greater >q;
21for(int i=0; i)else29}
30q.push(gg[i].r);
31int cnt=q.size();
32 ans=max(ans, cnt);33}
34 cout << ans <35return0;
36 }
51nod 1428 (貪心 優先佇列)
input 第一行乙個正整數n n 10000 代表活動的個數。第二行到第 n 1 行包含n個開始時間和結束時間。開始時間嚴格小於結束時間,並且時間都是非負整數,小於1000000000 output 一行包含乙個整數表示最少教室的個數。思路 發現好多貪心的題目都是用優先佇列來解決的。著個題目實際上...
51nod 1428 活動安排問題(優先佇列)
1428 活動安排問題 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 有若干個活動,第i個開始時間和結束時間是 si,fi 同乙個教室安排的活動之間不能交疊,求要安排所有活動,最少需要幾個教室?input 第一行乙個正整數n n 10000 代表活動的個數。第二...
51 Nod1428活動安排
1428 活動安排問題 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 input 第一行乙個正整數n n 10000 代表活動的個數。第二行到第 n 1 行包含n個開始時間和結束時間。開始時間嚴格小於結束時間,並且時間都是非負整數,小於1000000000 ou...