這道題同樣也是貪心
要使木板總長度最少,就要使未蓋木板的長度最大。
我們先用一塊木板蓋住牛棚,然後,每次從蓋住的范圍內選一個最大的空隙,以空隙為界將木板分成兩塊,重復直到分成m塊或沒有空隙。
/* ID:twd30651 PROG:barn1 LANG:C++ */ #include#include #include //#define DEBUG using namespace std; int M; int S; int C; int origin_data[300]; int process_data[300]; int comp(const void*a,const void*b) { return*(int*)a-*(int*)b; } int comp2(const void*a,const void*b) { return*(int*)b-*(int*)a; } int main(int argc,char *argv[]) { freopen("barn1.in","r",stdin); freopen("barn1.out","w",stdout); scanf("%d %d %d",&M,&S,&C); int i=0; int min=300; int max=0; while(scanf("%d",&origin_data[i])==1) { if(origin_data[i]>max)max=origin_data[i]; if(origin_data[i] 網上有說可以用dp,後面學習下