(usaco)修理牛棚 Barn Repair

2021-09-13 13:23:55 字數 571 閱讀 4420

題目傳送門sxazr

本題可以這樣想我這蒟蒻沒想出

一條超長木板把所有牛棚覆蓋,然後從中截去m-1段,就剩下m段了;

這樣就可以簡單的貪心了;

把每個有牛的牛棚之間的距離從大到小排序;

截去最大的m-1個就好了。

**

#include #include #include using namespace std;

int m,s,c,num[210],ans,sum[210];//sum有牛的牛棚之間的間隔;

int main()

sort(num+1,num+c+1);

ans=num[c]-num[1]+1;

for(int i=1;i<=c-1;i++)

sum[i]=num[i+1]-num[i];

sort(sum+1,sum+c);//我這是從小到大排序哈,懶得寫了

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

ans-=sum[c-i]-1;//一定要減1,因為是兩個牛之間的距離

cout

}

USACO 修理牛棚

同樣是一道貪心題,我的思路是用乙個陣列存下所有的空擋,對空擋進行排序,然後再在總長度中減去前m 1 大的空檔長度。關鍵還是理解題意。貌似洛谷 oj不支援 int min 之類的。還有要對初始資料排一次序,害我 wa了一次。include include includeusing namespace ...

修理牛棚 貪心 USACO

今天開始終於可以刷usaco的題啦 準備每一道都發乙個題解 時間限制 1 sec 記憶體限制 128 mb 提交 9 解決 7 提交 狀態 討論版 命題人 外部匯入 題目描述 1.3.2 barn repair 修理牛棚 barn1.pas c cpp 在乙個夜黑風高,下著暴風雨的夜晚,farmer...

USACO1 3 2修理牛棚

略 這道題多半是個貪心,找出連續牛棚覆蓋,然後覆蓋住間隔最小的空隙 直到用了m塊,實現起來有一點技巧 o s 我覺得還可以dp f i,j 表示前i塊木頭覆蓋前j個牛棚的最小長度 f 1,1 j f i,j min f i 1,j 1 1,f i 1,j a j a j 1 這裡不用擔心m越大值反而...