905 區間選點(貪心)

2021-10-09 16:15:23 字數 1443 閱讀 1082

題目傳送門

題解思路參考大佬

給定 n 個閉區間[ai

,bi]

[a_i,b_i]

[ai​,b

i​],請你在數軸上選擇盡量少的點,使得每個區間內至少包含乙個選出的點。

輸出選擇的點的最小數量。

位於區間端點上的點也算作區間內。

輸入格式

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

接下來 n 行,每行包含兩個整數ai,

bi

a_i,b_i

ai​,bi

​,表示乙個區間的兩個端點。

輸出格式

輸出乙個整數,表示所需的點的最小數量。

資料範圍1≤n

≤105

,−10

9≤ai

≤bi≤

10

91≤n≤10^5,\\ −10^9≤a_i≤b_i≤10^9

1≤n≤10

5,−1

09≤a

i​≤b

i​≤1

09輸入輸出樣例

樣例輸入1

3

-1 1

2 43 5

樣例輸出1

2
貪心。

將每個區間按右端點從小到大排序。

從前往後依次列舉每個區間,設ed為每個區間選擇的點,初始化值為無窮小。

令ans為所有可行解的最小值,cnt為乙個可行解方案。

由於題意是找出選擇的點的最小數量,即ans ≤ cnt若已有cnt個兩兩互不相交的區間,則所有方案都要把它們覆蓋住,那麼至少需要cnt個點,即ans≥cnt

證明出ans = cnt

c++ operator關鍵字(過載操作符)鏈結

#include

#include

using

namespace std;

const

int n =

1e5+10;

int n;

struct range

}range[n]

;int

main()

;}sort

(range, range + n)

;int res =

0, ed =

-2e9

;for

(int i =

0; i < n; i++)}

printf

("%d"

,res)

;return0;

}

Acwing 905 區間選點

給定n個閉區間 ai,bi 請你在數軸上選擇盡量少的點,使得每個區間內至少包含乙個選出的點。輸出選擇的點的最小數量。位於區間端點上的點也算作區間內。輸入格式 第一行包含整數n,表示區間數。接下來n行,每行包含兩個整數ai,bi 表示乙個區間的兩個端點。輸出格式 輸出乙個整數,表示所需的點的最小數量。...

Acwing 905 區間選點

905.區間選點 給定n個閉區間 ai,bi 請你在數軸上選擇盡量少的點,使得每個區間內至少包含乙個選出的點。輸出選擇的點的最小數量。位於區間端點上的點也算作區間內。輸入格式 第一行包含整數n,表示區間數。接下來n行,每行包含兩個整數ai,bi,表示乙個區間的兩個端點。輸出格式 輸出乙個整數,表示所...

Week3 區間選點 區域性貪心

題目內容 數軸上有 n 個閉區間 a i,b i 取盡量少的點,使得每個區間內都至少有乙個點 不同區間內含的點可以是同乙個 輸入格式 第一行1個整數n n 100 第2 n 1行,每行兩個整數a,b a,b 100 輸出格式 乙個整數,代表選點的數目 樣例 input 21 5 4 6output ...