數軸上有 n 個閉區間 [a_i, b_i]。取盡量少的點,使得每個區間內都至少有乙個點(不同區間內含的點可以是同乙個)
第一行1個整數n(n<=100)
第2~n+1行,每行兩個整數a,b(a,b<=100)
乙個整數,代表選點的數目
21 5
4 63
1 32 5
4 6該題的貪心策略是:選取區間的最後乙個點。將所有區間按end從小到大排序,end相同時,按照be從大到小排序。
證明:1、當區間包含時,小區間中若存在一點,則大區間中也一定存在一點,所以我們應當優先選取小區間中的點,從而使大區間不需要取點。如果出現區間包含情況,按照此種排序方法遍歷時會優先選取小區間,則此種情況下貪心策略是正確的。
2、當區間的開始點按遞增順序排列時,選擇區間內最後的一點顯然可以包括更多的區間,則此種情況下貪心策略也是正確的。
#include
#include
using
namespace std;
struct zone
;bool
cmp(zone a, zone b)
intmain()
sort
(temp,temp+n,cmp)
;int j =0;
for(
int i =
1; i < n; i++)}
cout << count << endl;
}return0;
}
week3 B 區間選點
數軸上有 n 個閉區間 a i,b i 取盡量少的點,使得每個區間內都至少有乙個點 不同區間內含的點可以是同乙個 input 第一行1個整數n n 100 第2 n 1行,每行兩個整數a,b a,b 100 output 乙個整數,代表選點的數目 sample input 215 46sample ...
week3 B 區間選點
數軸上有 n 個閉區間 a i,b i 取盡量少的點,使得每個區間內都至少有乙個點 不同區間內含的點可以是同乙個 第一行1個整數n n 100 第2 n 1行,每行兩個整數a,b a,b 100 運用貪心的策略,選擇的點可以讓數量最多的區間將它包含,所以我們要求出各區間交集,當交集不為空時在交集處找...
Week3 B 區間選點 貪心演算法
題目大意 數軸上有 n 個閉區間 a i,b i 取盡量少的點,使得每個區間內都至少有乙個點 同區間內含的點可以是同乙個 思路本題是一道貪心問題,解決問題的關鍵是尋找恰當的貪心的方法。這道題採用如下貪心方法 為什麼上述做法可以實現選點最少呢?在按照上述方法排序後,我們從左往右想。對於第乙個區間,其中...