區間問題一般都需要對區間進行排序,對左端點排序,或對右端點排序,或雙關鍵字排序
然後需要
證明這樣的選法選出來的點數一定是符合答案的,且是選點最少的
首先按照這個方法來選的話,每乙個區間上一定選了乙個點,所以這種選法是一種合法的方案
然後這道題的最優解是指所有合法方案中的選點最少的,所以
所以ans = cnt
1 #include 2using
namespace
std;
3const
int n = 100010;4
struct
range range[n];
7bool
cmp(range r1, range r2)
10int
main() ;17}
18 sort(range, range +n, cmp);
19int res = 0, ed = -2e9;
20//
ed表示上乙個點的下標
21for (int i = 0; i < n; i++) 26}
27 cout << res <
28return0;
29 }
905 區間選點(貪心)
題目傳送門 題解思路參考大佬 給定 n 個閉區間 ai bi a i,b i ai b i 請你在數軸上選擇盡量少的點,使得每個區間內至少包含乙個選出的點。輸出選擇的點的最小數量。位於區間端點上的點也算作區間內。輸入格式 第一行包含整數 n 表示區間數。接下來 n 行,每行包含兩個整數ai,bi a...
hdu 4883 區間選點
昨天比賽的時候沒有做出來,本來是想用貪心的,但是貪了好久都沒有招,今天在網上搜了解題報告 好像說這是一類區間選點問題 有乙個好的做法 1 首先把題目中的時間全轉化為分鐘,那麼區間就在0 1440中間 2 對於n組人,有乙個si 和乙個ei,那麼開個陣列,cnt si d cnt ei d 3 也就是...
hdu 4883 區間選點
昨天比賽的時候沒有做出來,本來是想用貪心的,可是貪了好久都沒有招,今天在網上搜了解題報告 好像說這是一類區間選點問題 有乙個好的做法 1 首先把題目中的時間全轉化為分鐘,那麼區間就在0 1440中間 2 對於n組人,有乙個si 和乙個ei,那麼開個陣列,cnt si d cnt ei d 3 也就是...