week 3 B 區間選點

2021-10-03 15:17:51 字數 759 閱讀 9769

數軸上有 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 取盡量少的點,使得每個區間內都至少有乙個點 同區間內含的點可以是同乙個 思路本題是一道貪心問題,解決問題的關鍵是尋找恰當的貪心的方法。這道題採用如下貪心方法 為什麼上述做法可以實現選點最少呢?在按照上述方法排序後,我們從左往右想。對於第乙個區間,其中...