注意如果在端點處相交,也算有交集。
輸出合併完成後的區間個數。
例如:[1,3]和[2,6]可以合併為乙個區間[1,6]。
輸入格式
第一行包含整數n。
接下來n行,每行包含兩個整數 l 和 r。
輸出格式
共一行,包含乙個整數,表示合併區間完成後的區間個數。
資料範圍
1≤n≤100000,
−109≤li≤ri≤109
輸入樣例:
51 2
2 45 6
7 87 9
輸出樣例:
32、基本思想:
按區間的左端點排序,當前維護區間的下乙個區間有三種情況:
①含於當前維護區間
②左端點》=當前維護區間左端點但是與當前維護區間有交集
③左端點》當前維護區間右端點
對於①②兩種情況,將當前維護區間更新即可,對於③將當前維護區間換成下乙個區間。
#include
#include
#include
using
namespace std;
typedef pair<
int,
int> pii;
int n, l, r;
vector segs;
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;
}//該**引用acwing**的**
AcWing 803 區間合併
給定 n 個區間 li,ri 要求合併所有有交集的區間。注意如果在端點處相交,也算有交集。輸出合併完成後的區間個數。例如 1,3 和 2,6 可以合併為乙個區間 1,6 第一行包含整數n。接下來n行,每行包含兩個整數 l 和 r。共一行,包含乙個整數,表示合併區間完成後的區間個數。1 n 10000...
區間合併 AcWing 803
include include include using namespace std typedef pair pii intn void merge vector interval 第一次在這裡初始化 st item.first,ed item.second 第一段區間從這裡開始 else ed...
803 區間合併
給定 n 個區間 l i,r i 要求合併所有有交集的區間。注意如果在端點處相交,也算有交集。輸出合併完成後的區間個數。例如 1,3 和 2,6 可以合併為乙個區間 1,6 輸入格式 第一行包含整數n。接下來n行,每行包含兩個整數 l 和 r。輸出格式 共一行,包含乙個整數,表示合併區間完成後的區間...