日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

USACO-Section1.4 Barn Repair (贪心算法)

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 USACO-Section1.4 Barn Repair (贪心算法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2017-5-27

題目描述

給定板的數目,用這么多塊板把牛棚蓋上使得板的總長最小

解答

先把牛所在牛棚號排序,然后按照每兩個牛棚之間的距離排序, 間隔過大的牛棚不搭木板即可

代碼

/* ID: 18795871 PROG: barn1 LANG: C++ */ #include<iostream> #include<cstdlib> #include<fstream> #include<algorithm> using namespace std;const int N = 200; int x[N+1];ifstream fin("barn1.in"); ofstream fout("barn1.out");struct cj{int s,e,c; }y[N+1];int cmp(const void *a,const void *b){struct cj *k1=(struct cj *)a;struct cj *k2=(struct cj *)b;if (k1->c==k2->c) return k2->s-k1->s;return k2->c-k1->c; }int main() {int i,m,n,c;fin>>m>>n>>c;int ma=1,mi=200;for (i=1;i<=c;i++){fin>>x[i];ma=max(ma,x[i]);mi=min(mi,x[i]);} sort(x+1,x+c+1);for (i=1;i<c;i++){y[i].s=x[i];y[i].e=x[i+1];y[i].c=x[i+1]-x[i];}qsort(y+1,c-1,sizeof(y[0]),cmp);int sum=0;int l=min(m,c);//注意不一定要前m個大的(若m>c)for (i=1;i<l;i++){sum+=y[i].c-1;}int r=ma-mi+1-sum;fout<<r<<endl;return 0; }

直接使用貪心算法,如果說我們沒有限制木棒的根數,那么我們應該把每一個棚子都加一根木棒,這樣會使使用的木棒的總長度最小,但是,我們的根數是有限制的,這就意味著我們的木棒可能會覆蓋到沒有奶牛的棚子上面去,那么我們應該將所有的M根木棒全部用上,才會使總長度最小,那么就等同于我們要用M根木棒覆蓋所有的奶牛,那么就相當于在S長的線段上放置M個區間,保證區間長度和最小,并且能夠覆蓋到所有指定的地方。
那么我們剩下來的呢,剩下的M-1個區間之和應該是越大越好,(頭和尾巴一定是有奶牛的),那么我們就可以使用貪心了,區間總長度-剩下M-1區間之和就是我們要求的結果。我們將區間長度進行排序,選取最大的M-1個區間不要放置木棍即可。

/* ID: 18795871 PROG: barn1 LANG: C++ */ #include<iostream> #include<fstream> #include<algorithm> using namespace std;ifstream fin("barn1.in"); ofstream fout("barn1.out");const int N = 200; int x[N+1],y[N+1];int main() {int i,m,n,c,ma=0,mi=N;while (fin>>m>>n>>c){for (i=0;i<c;i++){fin>>x[i];ma=max(ma,x[i]);mi=min(mi,x[i]); } if (m>=c){fout<<c<<endl;continue;}sort(x,x+c);for (i=0;i<c-1;i++){y[i]=x[i+1]-x[i]-1;}sort(y,y+c-1);int sum=0;for (i=0;i<m-1;i++){sum+=y[c-i-2];}fout<<ma-mi+1-sum<<endl; }return 0; }

總結

以上是生活随笔為你收集整理的USACO-Section1.4 Barn Repair (贪心算法)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。