首先給出 m,s,c表示有m根木棍,s個棚,以及c頭牛
接下來有c個數,分別代表每頭牛在哪個棚子裡
要求你用m根棍子(連續的一段長度),覆蓋所有的牛所在的棚子,輸出m根棍子最小的長度和
做法:首先是貪心思想,因為有c個座標必須覆蓋在m個連續長度之下,那麼我們只要把相鄰的兩個點合併(c-m)次,那麼每次合併的代價為這兩個點的距離差-1,而讓長度最小,自然就是讓c-m對最近的兩個相鄰節點合併。答案就是這些合併所需的代價和加上牛的數目,c++的話直接sort解決
#include
#include
#include
#include
const
int maxn=210;
using
namespace
std;
int m,s,c,sum;
int a[maxn],cha[maxn];
int main()
USACO1 3修理牛棚
題目 問題 b 修理牛棚 時間限制 1 sec 記憶體限制 128 mb 提交 39 解決 5 提交 狀態 討論版 命題人 201805050252 題目描述 在乙個暴風雨的夜晚,農民約翰的牛棚的屋頂 門被吹飛了。好在許多牛正在度假,所以牛棚沒有住滿。剩下的牛乙個緊挨著另乙個被排成一行來過夜。有些牛...
USACO 修理牛棚
同樣是一道貪心題,我的思路是用乙個陣列存下所有的空擋,對空擋進行排序,然後再在總長度中減去前m 1 大的空檔長度。關鍵還是理解題意。貌似洛谷 oj不支援 int min 之類的。還有要對初始資料排一次序,害我 wa了一次。include include includeusing namespace ...
P1209 USACO1 3 修理牛棚
在乙個夜黑風高,下著暴風雨的夜晚,farmer john的牛棚的屋頂 門被吹飛了。好在許多牛正在度假,所以牛棚沒有住滿。牛棚乙個緊挨著另乙個被排成一行,牛就住在裡面過夜。有些牛棚裡有牛,有些沒有。所有的牛棚有相同的寬度。自門遺失以後,farmer john必須盡快在牛棚之前豎立起新的木板。他的新木材...