玄學的貪心問題,一般全憑直覺。
貪心問題沒有固定討論,沒有模板,見多了就好了,證明想法的正確性是很困難的,大多採用反證法。
區間問題無非左端點、右端點、左右端點排序…
908. 最大不相交區間數量
本題和 [區間問題] 區間選點(區間問題+貪心) 一模一樣,乙份**交兩遍就行了。貪心思路和證明思路都一致,簡單對問題轉化即可。
貪心思路:
證明:
為什麼最大不相交區間數==最少覆蓋區間點數呢?
**:
#include
#include
using
namespace std;
const
int n =
1e5+5;
struct range
}range[n]
;int
main()
;}sort
(range, range + n)
;int res =
0, ed =
-2e9
;for
(int i =
0; i < n;
++i)
if(ed < range[i]
.l)++res, ed = range[i]
.r;
cout << res << endl;
return0;
}
最大不相交區間數量
給定 n n n 個閉區間 ai bi ai,bi ai,bi 請你在數軸上選擇若干區間,使得選中的區間之間互不相交 包括端點 輸出可選取區間的最大數量。輸入格式 第一行包含整數 n n n,表示區間數。接下來 n n n 行,每行包含兩個整數 ai,bi ai,bi ai,bi,表示乙個區間的兩個...
AcWing 908 最大不相交區間數量
題目描述 給定n個閉區間 ai,bi 請你在數軸上選擇若干區間,使得選中的區間之間互不相交 包括端點 輸出可選取區間的最大數量。輸入格式 第一行包含整數n,表示區間數。接下來n行,每行包含兩個整數ai,bi,表示乙個區間的兩個端點。輸出格式 輸出乙個整數,表示可選取區間的最大數量。資料範圍 1 n ...
最大不相交區間數 最少區間數覆蓋問題 貪心思想
最大不相交區間數的一道題是hdu2037 題目給出n個區間,問最多有多少個區間沒有重疊,只需要對區間右端點進行排序就行,因為乙個節目結束得早的話就會為其他節目留下更多的時間,如果選擇對節目的開始時間進行排序的話就會導致有乙個節目遲遲不結束使得其他節目又沒法開始的現象。右端點最小的第乙個區間時一定要選...