Week3作業B 區間選點

2021-10-03 13:44:01 字數 809 閱讀 2520

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

input

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

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

output

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

sample input

21 5

4 6sample output

1貪心策略:

將所有區間按b降序排序,按a公升序排序,第乙個點取第乙個區間的右端點,然後逐一進行比較,不斷更新點同時記錄點的數目。

證明:1.因為要取盡量少的點,所以當乙個大區間包含乙個小區間時,我們應當優先選取小區間的點,此種情況下按b降序排序,按a公升序排序的貪心策略是最優的;

2.當剩下的區間之間互不包含時,如圖則一定有a1#include

#include

#include

using

namespace std;

struct point};

intmain()

sort

(v.begin()

,v.end()

);point p1=v[0]

;int te=p1.y;

count=1;

for(

int i=

1;isize()

;i++)}

cout<

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乙個整數,代表選點的數目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 乙個整數,代表選點的數目 用貪心思想,要想要選取最少的點,即是讓選點被盡可能多...