AcWing 908 最大不相交區間數量

2021-10-02 05:26:03 字數 876 閱讀 8931

題目描述:

給定n個閉區間[ai,bi],請你在數軸上選擇若干區間,使得選中的區間之間互不相交(包括端點)。

輸出可選取區間的最大數量。

輸入格式

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

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

輸出格式

輸出乙個整數,表示可選取區間的最大數量。

資料範圍

1≤n≤10^5,

−10^9≤ai≤bi≤10^9

輸入樣例:

3

-1 1

2 43 5

輸出樣例:

2
分析:

在acwing 905 區間選點中,我們證明了將區間按照右端點排序,然後選擇不相交的區間的右端點,可以使得所有區間都至少包含了乙個選擇出來的點。即被選擇出來多少個點,原區間集合就有多少個不相交的區間,設選擇出來ans個點,可以證明區間集合中有ans個不相交的區間。如果原區間集合中存在res個不相交的區間,且res > ans,則至少應該有res個點才能使得各個區間都包含了被選擇的點,但是已經選出了ans個點足以使得所有區間內都有被選擇的點,說明區間集合內不存在res個不相交的區間,即ans是不相交區間的最大數量。因此,本題**與上一題**完全一致,按區間右端點自小到大排序然後取右端點的貪心策略既可以解決區間選點問題,也可以解決最大不相交區間問題。

#include #include using namespace std;

const int maxn = 100005;

paira[maxn];

int main()

cout

}

最大不相交區間數量

給定 n n n 個閉區間 ai bi ai,bi ai,bi 請你在數軸上選擇若干區間,使得選中的區間之間互不相交 包括端點 輸出可選取區間的最大數量。輸入格式 第一行包含整數 n n n,表示區間數。接下來 n n n 行,每行包含兩個整數 ai,bi ai,bi ai,bi,表示乙個區間的兩個...

ssoj2868(最大不相交區間)

題意 在二維平面上以 0,0 為左下角,w,d 為右上角的矩形區域內有一些點,每個點代表乙個人,每個人將會面對乙個方向 東南西北 乙個人的視野範圍是以該點為頂點的直角,角平分線與其所面對的方向平行,角的兩條邊會與矩形交於兩點,矩形上兩點之間的部分,為該人的可視部分。為了讓每個人都能知道時間,你需要在...

區間問題 最大不相交區間數量 區間問題 貪心

玄學的貪心問題,一般全憑直覺。貪心問題沒有固定討論,沒有模板,見多了就好了,證明想法的正確性是很困難的,大多採用反證法。區間問題無非左端點 右端點 左右端點排序 908.最大不相交區間數量 本題和 區間問題 區間選點 區間問題 貪心 一模一樣,乙份 交兩遍就行了。貪心思路和證明思路都一致,簡單對問題...