給定 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堆沙子分別為...