week3 作業B 區間選點

2021-10-03 22:33:47 字數 881 閱讀 7550

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

input

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

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

output

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

用貪心思想,要想要選取最少的點,即是讓選點被盡可能多的區間包含。

首先要把區間按右端點公升序,左端點降序排序(如圖),要想選的點被盡可能多的區間包含,肯定是要往後選,即區間的右端點是被選擇的點,當區間左端點小於等於當前的選點時,說明此點被這個區間包含,否則,取這個區間的右端點作為下乙個選點,這樣就可使點數最少。

#include

#include

using

namespace std;

struct point};

intmain()

sort

(p,p+n)

;//將區間進行排序

int flag=p[0]

.b;//當前的選點

int count=1;

//點的數量

for(

int i=

1;icout<

return0;

}

區間選點(week3 作業B)

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

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...