AcWing 803 區間合併 C

2021-10-09 06:30:14 字數 1094 閱讀 4749

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

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

例如:[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。輸出格式 共一行,包含乙個整數,表示合併區間完成後的區間...