程式設計Week3 C 區間覆蓋

2021-10-04 02:36:30 字數 857 閱讀 8237

給出n個閉區間段,要求選擇盡可能少的區間,來完全覆蓋一條指定線段,僅考慮覆蓋整數點。

第一行:n(1<=n<=25000)和t(1<=t<=1,000,000)

第二行至n+1行: 每一行乙個閉區間。

輸出選擇的區間個數,若不可能則輸出-1。

貪心策略,選擇區間的左端點作為貪心指標,在按照如下的策略進行選擇:

#include

#include

using

namespace std;

struct section};

section p[

25000];

intmain()

sort

(p,p+n)

;//最小的區間起點大於1,不可能有解

if(p[0]

.a>1)

s=-1

;else

while

(p[i+1]

.a<=end+1)

} start=a;

end=b;

s++;}

//到結束,區間依然沒有到達t,則無解

if(ends=-1

;}printf

("%d\n"

,s);

return0;

}

本題也是一道純貪心的題目,重點還是在於貪心指標的選擇上,與區間選點題目不同的是,這道題選擇的區間的左端點,同時還需要對資料進行預處理,剪除那些無關的情況,來簡化策略的選擇過程。除此之外,要充分考慮到整數覆蓋的問題,因此判斷兩個區間相鄰的情況時,並不是b1等於a2,而是b1+1=a2,基於這種情況,在選擇時要充分考慮區間的範圍,從而可以盡量少的選擇區間來覆蓋更長的長度。

week3 C 區間覆蓋(不支援C 11)

數軸上有 n 1 n 25000 個閉區間 ai,bi 選擇盡量少的區間覆蓋一條指定線段 1,t 1 t 1,000,000 覆蓋整點,即 1,2 3,4 可以覆蓋 1,4 不可能辦到輸出 1 input 第一行 n和t 第二行至n 1行 每一行乙個閉區間。output 選擇的區間的數目,不可能辦到...

區間覆蓋(week3 作業C)

描述 數軸上有 n 個閉區間 ai,bi 選擇盡量少的區間覆蓋一條指定線段 1,t 不可能辦到輸出 1 輸入 注意,輸入包含多組測試資料,請處理到檔案結束 第一行 n和 第二行至n 1行 每一行乙個閉區間。輸出 選擇的區間的數目,不可能辦到輸出 1 樣例輸入 3 10 1 73 6 6 10 樣例輸...

week3作業 C 區間覆蓋

描述 數軸上有 n 1 n 25000 個閉區間 ai,bi 選擇盡量少的區間覆蓋一條指定線段 1,t 1 t 1,000,000 覆蓋整點,即 1,2 3,4 可以覆蓋 1,4 不可能辦到輸出 1 輸入 第一行 n和t 第二行至n 1行 每一行乙個閉區間。輸出 選擇的區間的數目,不可能辦到輸出 1...