區間合併 (模板題)

2021-10-12 08:31:09 字數 949 閱讀 7402

給定 nn 個區間 [li,ri][li,ri],要求合併所有有交集的區間。

注意如果在端點處相交,也算有交集。

輸出合併完成後的區間個數。

例如:[1,3]和[2,6]可以合併為乙個區間[1,6]。

輸入格式

第一行包含整數n。

接下來n行,每行包含兩個整數 l 和 r。

輸出格式

共一行,包含乙個整數,表示合併區間完成後的區間個數。

資料範圍

1≤n≤1000001≤n≤100000,

−109≤li≤ri≤109−109≤li≤ri≤109

輸入樣例:

51 2

2 45 6

7 87 9

輸出樣例:

3

#include

#include

#include

using

namespace std;

typedef pair<

int,

int> pii;

void

merge

(vector

&segs));

//不是第乙個

st = seg.first, ed = seg.second;

}else ed =

max(ed, seg.second);if

(st !=

-2e9

) res.

push_back()

;//有可能是空集

segs = res;

}int

main()

);}merge

(segs)

; cout << segs.

size()

<< endl;

return0;

}

區間合併 模板題

給定 n 個區間 li,ri 要求合併所有有交集的區間。注意如果在端點處相交,也算有交集。輸出合併完成後的區間個數。例如 1,3 和 2,6 可以合併為乙個區間 1,6 輸入格式 第一行包含整數n。接下來n行,每行包含兩個整數 l 和 r。輸出格式 共一行,包含乙個整數,表示合併區間完成後的區間個數...

Hotel 線段樹區間合併模板題

有n個車位,一開始全是空的。m個要求,1 k,表示有k輛車要停,且位置要連續,找到編號最小的位置輸出,如果停不下,就輸出0 2 x k,表示從x位置開始,有連續k輛車開走。1代表有空位,0代表沒有空位。tr m left代表從左端點向右,連續1的區間長度,tr m right代表從右端點向左連續1的...

合併石子(區間dp 模板題)

設有n堆沙子排成一排,其編號為1,2,3,n n 300 每堆沙子有一定的數量,可以用乙個整數來描述,現在要將這n堆沙子合併成為一堆,每次只能合併相鄰的兩堆,合併的代價為這兩堆沙子的數量之和,合併後與這兩堆沙子相鄰的沙子將和新堆相鄰,合併時由於選擇的順序不同,合併的總代價也不相同,如有4堆沙子分別為...