week3作業 B 區間選點

2021-10-03 17:40:37 字數 853 閱讀 2210

數軸上有 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

input3

1 32 5

4 6output2

解題思路:

如果閉區間i1被閉區間i2包含,那麼在i1中取點可以保證這個點一定在i2內。接著把所有區間按左端點從大到小排序,去除掉區間包含的情況。顯然,由於每個閉區間中都需要存在乙個點,因此對左端點最大的區間i1來說,取左端點就能覆蓋到盡可能多的區間。

#include

#include

using

namespace std;

const

int maxn=

110;

struct intevali[maxn]

;bool

cmp(inteval a,inteval b)

intmain()

sort

(i,i+n,cmp)

;int ans=

1,lastx=i[0]

.x;for

(int i=

1;iprintf

("%d"

,ans)

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