區間覆蓋問題(貪心) SDUT

2021-09-11 04:10:31 字數 1262 閱讀 2382

time limit: 1000 ms memory limit: 65536 kib

submit

statistic

用i來表示x座標軸上座標為[i-1,i]的長度為1的區間,並給出n(1≤n≤200)個不同的整數,表示n個這樣的區間。

現在要求畫m條線段覆蓋住所有的區間,

條件是:每條線段可以任意長,但是要求所畫線段的長度之和最小,

並且線段的數目不超過m(1≤m≤50)。

輸入包括多組資料,每組資料的第一行表示區間個數n和所需線段數m,第二行表示n個點的座標。

每組輸出佔一行,輸出m條線段的最小長度和。

5 3

1 3 8 5 11

7
做了幾道貪心的題,發現貪心很多情況下就是需要找一些資料的最值,例如此題,就是找到最大間隔並進行刪除,由此可見,日後在寫貪心的題目時,可以多注意一下各個資料的最值

#include #include int a[205], b[205];

void quick_sort(int *, int, int);///由大到小快排

int main()

quick_sort(a, 0, n - 1);///給 n 個區間降序排序,方便計算間隔距離

for(i = 0; i < n - 1; i++)

quick_sort(b, 0, n - 2);///給 n - 1 個間隔距離排序,方便取最大間隔

line_length = a[0] - a[n - 1] + 1;///當前情況下的長度

line_number = 1;///當前的線段個數

j = 0;///記錄間隔區間的位置

while(line_number < m && b[j] > 0)

printf("%d\n", line_length);

}return 0;

}void quick_sort(int *a, int l, int r)

a[i] = key;

quick_sort(a, l, i - 1);

quick_sort(a, i + 1, r);

}

此題的排序並未有特殊要求,此處我用的是快排,但是氣泡排序也可以。

另乙個區間覆蓋問題:

f - 區間覆蓋問題 sdut oj 貪心演算法   

SDUT 貪心 區間覆蓋問題

d 區間覆蓋問題 description 用i來表示x座標軸上座標為 i 1,i 的長度為1的區間,並給出n 1 n 200 個不同的整數,表示n個這樣的區間。現在要求畫m條線段覆蓋住所有的區間,條件是 每條線段可以任意長,但是要求所畫線段的長度之和最小,並且線段的數目不超過m 1 m 50 inp...

sdut 2074 區間覆蓋問題(貪心)

time limit 1000ms memory limit 65536k 用i來表示x座標軸上座標為 i 1,i 的長度為1的區間,並給出n 1 m 200 個不同的整數,表示n個這樣的區間。現在要求畫m條線段覆蓋住所有的區間,條件是 每條線段可以任意長,但是要求所畫線段的長度之和最小,並且線段的...

貪心 區間覆蓋問題

區間覆蓋問題 time limit 1000ms memory limit 65536kb submit statistic discuss problem description 設x1 x2 xn 是實直線上的n 個點。用固定長度的閉區間覆蓋這n 個點,至少需要多少個這樣的固定長度閉區間?對於給...