貪心問題 區間選點

2022-06-22 08:51:12 字數 1279 閱讀 3414

問題描述:

數軸上有 n 個閉區間 [a_i, b_i]。取盡量少的點,使得每個區間內都至少有乙個點(不同區間內含的點可以是同乙個)

input

第一行1個整數n(n<=100)

第2~n+1行,每行兩個整數a,b(a,b<=100)

output

乙個整數,代表選點的數目

examples

input21

546output

1input31

3254

6output

2

view code

解決思路:

貪心策略:選點之前先要對區間排個序嘛,一共有兩種策略

1)左端點公升序排序

2)右端點公升序排序

貪心總是達到區域性最優

我們總是希望每個點可以覆蓋到更多的點,即選擇未覆蓋區間的右端點選擇覆蓋

如果按照 1)  那麼下面這種情況則不會達到最優,捨棄。。

如果按照 2)

//區間選點

19/*

按照終點從小到大排序

20int

main()

2127

28 sort(interval,interval+n,cmp);

29//

for(int i=0;i30

//cout<31

int number=1;32

int point=interval[0

].b;

33for(int i=1;i)40}

41 cout

42return0;

43 }

貪心 區間選點問題

數軸上有 n 個閉區間 a i,b i 取盡量少的點,使得每個區間內都至少有乙個點 不同區間內含的點可以是同乙個 第一行1個整數n n 100 第2 n 1行,每行兩個整數a,b a,b 100 乙個整數,代表選點的數目 input 21546 output 1input 3132546 outpu...

貪心 區間選點問題

主要採用的就是貪心的思想,首先以每一段的右端點為判斷依據,通過重定義排序規則,使得排序規則是以右端點的大小來排序,然後通過遍歷整個陣列,如果左端點小於當前指定標誌位端點,說明這段是在點的內部範圍內的,就忽略,如果不是在當前指定標誌位端點,那麼就記錄端點數加一,同時更新標誌位端點為當前右端點。incl...

區間問題 區間選點 區間問題 貪心

玄學的貪心問題,一般全憑直覺。貪心問題沒有固定討論,沒有模板,見多了就好了,證明想法的正確性是很困難的,大多採用反證法。905.區間選點 貪心思路 證明 時間複雜度 o n logn o nlogn o nlog n include include using namespace std const...