題目:
問題 b: 修理牛棚
時間限制: 1 sec 記憶體限制: 128 mb
提交: 39 解決: 5
[提交] [狀態] [討論版] [命題人:201805050252]
題目描述
在乙個暴風雨的夜晚,農民約翰的牛棚的屋頂、門被吹飛了。 好在許多牛正在度假,所以牛棚沒有住滿。 剩下的牛乙個緊挨著另乙個被排成一行來過夜。 有些牛棚裡有牛,有些沒有。 所有的牛棚有相同的寬度。 自門遺失以後,農民約翰很快在牛棚之前豎立起新的木板。 他的新木材**者將會**他任何他想要的長度,但是**者只能提供有限數目的木板。 農民約翰想將他購買的木板總長度減到最少。 給出 m(1<= m<=50)可能買到的木板最大的數目;s(1<= s<=200)牛棚的總數;c(1 <= c <=s) 牛棚裡牛的數目,和牛所在的牛棚的編號stall_number(1 <= stall_number <= s),計算攔住所有有牛的牛棚所需木板的最小總長度。 輸出所需木板的最小總長度作為的答案。
輸入第 1 行: m , s 和 c(用空格分開)
第 2 到 c+1行: 每行包含乙個整數,表示牛所佔的牛棚的編號
輸出單獨的一行包含乙個整數表示所需木板的最小總長度
[ 一種最優的安排是用板攔住牛棚3-8,14-21,25-31,40-43.]
樣例輸入
4
501834
681415
1617
2125
2627
3031
4041
4243
樣例輸出
25
題意描述:
用最少的木板長度把所有的牛棚都擋住,當然每乙個牛棚費分乙個木板時最好的能讓擋住所有的牛棚並且用最少木板,但是木板的數量是有限的(木板的長度是不受限制的),這就要算出在木板數限制的條件下算出最小長度;
解題思路:
用木板長度減去中間木板與木板之間的間隔,然後減去第乙個牛棚到1號牛棚的距離和最後乙個有牛的牛棚的編號到最後乙個沒有牛棚的編號;
accept code:
#include
#include
using namespace std;
int a[
220]
,b[220];
intmain()
USACO1 3 修理牛棚 Barn Repair
首先給出 m,s,c表示有m根木棍,s個棚,以及c頭牛 接下來有c個數,分別代表每頭牛在哪個棚子裡 要求你用m根棍子 連續的一段長度 覆蓋所有的牛所在的棚子,輸出m根棍子最小的長度和 做法 首先是貪心思想,因為有c個座標必須覆蓋在m個連續長度之下,那麼我們只要把相鄰的兩個點合併 c m 次,那麼每次...
USACO 修理牛棚
同樣是一道貪心題,我的思路是用乙個陣列存下所有的空擋,對空擋進行排序,然後再在總長度中減去前m 1 大的空檔長度。關鍵還是理解題意。貌似洛谷 oj不支援 int min 之類的。還有要對初始資料排一次序,害我 wa了一次。include include includeusing namespace ...
P1209 USACO1 3 修理牛棚
在乙個夜黑風高,下著暴風雨的夜晚,farmer john的牛棚的屋頂 門被吹飛了。好在許多牛正在度假,所以牛棚沒有住滿。牛棚乙個緊挨著另乙個被排成一行,牛就住在裡面過夜。有些牛棚裡有牛,有些沒有。所有的牛棚有相同的寬度。自門遺失以後,farmer john必須盡快在牛棚之前豎立起新的木板。他的新木材...