演算法(貪心 區間分組)

2021-10-10 09:22:11 字數 1269 閱讀 1958

給定n個閉區間[ai,bi],請你將這些區間分成若干組,使得每組內部的區間兩兩之間(包括端點)沒有交集,並使得組數盡可能小。

輸出最小組數。

輸入格式

第一行包含整數n,表示區間數。

接下來n行,每行包含兩個整數ai,bi,表示乙個區間的兩個端點。

輸出格式

輸出乙個整數,表示最小組數。

資料範圍

1≤n≤105,

−109≤ai≤bi≤109

輸入樣例:

3-1 1

2 43 5

輸出樣例:

2原題傳送門

對左端點進行排序

priority_queue優先佇列 用法

貪心演算法理論

ans是最終答案,cnt是按照這個演算法得到的所有組合

因為ans是這些所有組合裡的最小值,所以ans<=cnt

所有cnt區間肯定有公共點,所以可行方案ans>=cnt,

所以ans=cnt

基本思路

1.將所有區間按左端點從小到大排序

2.從前往後處理每個區間

判斷能否將其放到某個現有的組中(····l[i]>max_r····)

如果不存在這樣的組,就開新組,然後再將其放進去

如果存在這樣的組,將其放進去,並更新當前組的max_r··

//優先佇列

for(

int i=

0;iprintf

("%d\n"

,heap.

size()

);return0;

}

區間分組問題 貪心

給定n個閉區間 ai,bi 請你將這些區間分成若干組,使得每組內部的區間兩兩之間 包括端點 沒有交集,並使得組數盡可能小。輸出最小組數。輸入格式 第一行包含整數n,表示區間數。接下來n行,每行包含兩個整數ai,bi,表示乙個區間的兩個端點。輸出格式 輸出乙個整數,表示最小組數。資料範圍 1 n 10...

演算法入門 區間貪心

區間貪心 一 區間不相交問題 問題描述 給出n個開區間 x,y 要求從這些開區間中選擇盡可能多的開區間,使得這些開區間兩兩之間沒有交集 例如 對於 1,3 2,4 3,5 6,7 來說,可以選出最多的三個區間 1,3 3,5 6,7 這就是區間選擇問題,所以在求解時,應該盡可能選擇小的區間,這樣才能...

貪心 區間貪心

給出n個開區間 x,y 從中選擇盡可能多的開區間,使得這些開區間兩兩沒有交集。先對左端點 從大到小 排序,如果左端點相同就對右端點從小到大排序。區間不相交問題 include include using namespace std const int maxn 110 區間結構體 struct in...