區間覆蓋問題 sdut oj

2021-07-30 22:51:15 字數 900 閱讀 7100

time limit: 1000ms

memory limit: 65536kb

problem description

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

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

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

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

input

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

output

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

example input

5 3

1 3 8 5 11

example output

7

hint

author

#includeint main()

///將座標從小當大排序

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

///求出每乙個區間與前乙個區間的間隔,第乙個不做處理

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

n--;///第乙個不作處理,所以總數要減一

///按照區間間隔從大到小排序

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

///m條線就要進行m-1次分割,每一次分割刪除最大的間隔區間

t = a[n] - a[0] + 1;

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

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

}return 0;

}

sdutoj 2074 區間覆蓋問題

用 m mm 條線段覆蓋住 n nn 個小區間,求 m mm 條線段的最小長度和。1 當 m mm 大於等於 n nn 時,直接輸出 n nn 即可。2 當 m mm 小於 n nn 時,先將 n nn 個區間從小到大排好序,區間的總長度便可知道。用 m mm 條線段覆蓋,也就是在這片區間上進行 m...

區間覆蓋問題

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

區間覆蓋問題

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