Acwing 905 區間選點

2021-09-28 16:24:08 字數 798 閱讀 8883

給定n個閉區間[ai,bi],請你在數軸上選擇盡量少的點,使得每個區間內至少包含乙個選出的點。

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

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

輸入格式

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

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

輸出格式

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

資料範圍

1≤n≤10^5,

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

輸入樣例:

3

-1 1

2 43 5

輸出樣例:

2
區間排序: 先按照右端點從小到大排序,如果右端點相同的話,左端點小的放前面.

如果前後兩個區間端點是相同的,兩個區間就取公共交點,這樣取到最小的點。

#include#includeusing namespace std;

struct **

}a[100010];

int main();

}sort(a,a + n);

int res = 1;

int pre_st = a[0].st;

int pre_ed = a[0].ed;

for (int i = 1; i < n; ++i)

else if (a[i].st == pre_ed)

}cout

}

Acwing 905 區間選點

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

905 區間選點(貪心)

題目傳送門 題解思路參考大佬 給定 n 個閉區間 ai bi a i,b i ai b i 請你在數軸上選擇盡量少的點,使得每個區間內至少包含乙個選出的點。輸出選擇的點的最小數量。位於區間端點上的點也算作區間內。輸入格式 第一行包含整數 n 表示區間數。接下來 n 行,每行包含兩個整數ai,bi a...

1 區間選點 區間問題

區間問題一般都需要對區間進行排序,對左端點排序,或對右端點排序,或雙關鍵字排序 然後需要 證明這樣的選法選出來的點數一定是符合答案的,且是選點最少的 首先按照這個方法來選的話,每乙個區間上一定選了乙個點,所以這種選法是一種合法的方案 然後這道題的最優解是指所有合法方案中的選點最少的,所以 所以ans...