week3作業 B 區間選點

2021-10-04 03:57:33 字數 802 閱讀 7078

題目

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

output2思路

用貪心演算法做,我們要求選的點最少,那麼兩個不重合的區間就盡量不要選點,什麼叫重合呢?當前乙個區間的右端點大於等於第二個區間的右端點時算有重合點。那麼我們按照右端點排序,第i和第j個區間不重合說明這兩個區間要選兩個點。我們從第乙個區間的右端點開始(設為tail),直到找到某個區間的左端點大於tail時,點數++,並從這個區間的右端點繼續開始。

**

#include

#include

using

namespace std;

struct time

;int

cmp(time x,time y)

intmain()

sort

(t,t+n,cmp)

;int count=1;

//初始為1

int i=1;

int tail=t[0]

.b;while

(ii++;}

cout

}

區間選點(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...