區間選點 貪心

2021-10-03 19:28:51 字數 1211 閱讀 2638

給定n個閉區間[ai,biai,bi],請你在數軸上選擇盡量少的點,使得每個區間內至少包含乙個選出的點。

輸出選擇的點的最小數量。

位於區間端點上的點也算作區間內。

輸入格式

第一行包含整數n,表示區間數。

接下來n行,每行包含兩個整數ai,biai,bi,表示乙個區間的兩個端點。

輸出格式

輸出乙個整數,表示所需的點的最小數量。

資料範圍

1≤n≤1051≤n≤105,

−109≤ai≤bi≤109−109≤ai≤bi≤109

輸入樣例:

3

-1 1

2 43 5

輸出樣例:

2
**如下:

#include#includeusing namespace std;

struct nodenodes[100010];

int n,ans=1;

bool cmp(node a,node b)

{ return a.r>n;

for(int i= 0;i>nodes[i].l>>nodes[i].r;

sort(nodes,nodes+n,cmp);

int nown=nodes[0].r;

for(int i=1;i給定n個閉區間[ai,biai,bi],請你在數軸上選擇若干區間,使得選中的區間之間互不相交(包括端點)。

輸出可選取區間的最大數量。

輸入格式

第一行包含整數n,表示區間數。

接下來n行,每行包含兩個整數ai,biai,bi,表示乙個區間的兩個端點。

輸出格式

輸出乙個整數,表示可選取區間的最大數量。

資料範圍

1≤n≤1051≤n≤105,

−109≤ai≤bi≤109−109≤ai≤bi≤109

輸入樣例:

3-1 1

2 43 5

輸出樣例:

2
**同上

重點分析:

首先,區間問題基本就是對左端點或者有端點或者雙關鍵字進行排序。。。

博文持續更新中,來題目來自acwing,若有需要,請支援正版

貪心 區間選點

一 問題描述 數軸上有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...

貪心 區間選點問題

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