貪心 區間選點

2022-09-01 12:06:11 字數 670 閱讀 7192

一、問題描述

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

第一行乙個數字n,表示有n個閉區間。 下面n行,每行包含2個數字,表示閉區間[ai, bi]

乙個整數,表示至少需要幾個點

在這裡給出一組輸入。例如:

31 3

2 45 6

在這裡給出相應的輸出。例如:

2二、**

#include using

namespace

std;

intmain()}}

int count = 1

;

int p = r[0

];

for(int i = 1;i)

}cout

}

三、**思路

先將區間按照右邊界大小(即r[i])進行排序,尋找兩個不同區間的相同集合,找到了計數器不用加一,找不到就將p移到另一區間的右邊界,並且計數器加一

四、解題思路||感想

每次都去「貪心」去找有相同集合的區間,找不到將p移動

其實一開始由於我對動態規劃,貪心演算法不熟悉,我對這類題總會出現弱邏輯問題,這次也以為應該是錯的,就碰巧提交到pta,沒想到過了,我也懵逼。

區間選點 貪心

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

貪心 區間選點問題

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

貪心 區間選點問題

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