區間選點(week3 作業B)

2021-10-03 13:10:42 字數 1111 閱讀 5903

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

input

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

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

output

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

examples

input

21 5

4 6output

1input

31 3

2 54 6

output

2

我的思路:

這道題我是利用貪心演算法解決的。在每個區域至少有一點,且點的數目最小的情況下,每乙個點都應是已給一段區間的右端點。那麼可以對右端點進行公升序排序,若右端點相同則按照左端點降序排列。然後遍歷這個序列,當前的點(排序後的第一段區間的右端點一定會選擇)是否在遍歷到的區間內,如果不在,則更換當前點為此區間的右端點,然後繼續遍歷,直到遍歷結束。

我的**:

#include

#include

using

namespace std;

int n;

struct ab

_ab[

100]

;bool

compare

(const ab& x,

const ab& y)

intmain()

sort

(_ab,_ab+n,compare)

;int now = _ab[0]

.b,num=1;

for(

int i=

1;icout

}

Week3作業B 區間選點

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

week3作業 B 區間選點

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

week3 作業B 區間選點

數軸上有 n 個閉區間 a i,b i 取盡量少的點,使得每個區間內都至少有乙個點 不同區間內含的點可以是同乙個 input 第一行1個整數n n 100 第2 n 1行,每行兩個整數a,b a,b 100 output 乙個整數,代表選點的數目 用貪心思想,要想要選取最少的點,即是讓選點被盡可能多...