貪心 區間選點(題解)

2021-10-03 21:43:47 字數 671 閱讀 2222

題意:

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

思路:由題意得選取的點需要盡量覆蓋多的區間,並且每個區間都至少有乙個點,所以從區域性來看:選取乙個點什麼時候能包含更多的區間,如果選擇排在最前的區間,則很容易想到最右端的點就比這個區間內其他點能覆蓋更多區間,所以按右端點從小到大進行排序,選擇右端點去包含。

總結:貪心演算法 ,由區域性最優—(按右端點將區間排序,選擇右端點是因為端點越在右邊,越能覆蓋後面的區間,)推全域性最優

反思:貪心最重要的是證明,證明時可以先考慮區域性最優,然後通過反例,還有證明貪心演算法正確性:貪心演算法領先,交換論證(當然,還是要多刷題找感覺)

**:

#include

#include

using

namespace std;

struct interval

}inter[

102]

;int

main()

sort

(inter,inter+t)

;int count=0;

int npath=

101;

for(

int i=

0;icout

}

區間選點 貪心

給定n個閉區間 ai,biai,bi 請你在數軸上選擇盡量少的點,使得每個區間內至少包含乙個選出的點。輸出選擇的點的最小數量。位於區間端點上的點也算作區間內。輸入格式 第一行包含整數n,表示區間數。接下來n行,每行包含兩個整數ai,biai,bi,表示乙個區間的兩個端點。輸出格式 輸出乙個整數,表示...

貪心 區間選點

一 問題描述 數軸上有n個閉區間 ai,bi 取盡量少的點,使得每個區間內都至少有乙個點 不同區間內含的點可以是同乙個 第一行乙個數字n,表示有n個閉區間。下面n行,每行包含2個數字,表示閉區間 ai,bi 乙個整數,表示至少需要幾個點 在這裡給出一組輸入。例如 31 3 2 45 6 在這裡給出相...

貪心 區間選點問題

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