給定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...