hdu2124 Repair the Wall
题意:有个1*L的裂缝,有N个宽度为1长度为Ai的木板,木板可以锯断,用尽可能少的木板来修补裂缝,输出最少要用多少块木板,如果不能修不好输出impossible。
贪心,直接把木板从大到小排序,捡着大的用!
AC代码,0ms,742B
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<stdio.h> 2 #include<string.h> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 __int64 ai[620]; 7 int cmp(int a,int b) 8 { 9 return a>b; 10 } 11 int main() 12 { 13 int l,n,i,num; 14 while(scanf("%d%d",&l,&n)!=EOF) 15 { 16 num=0; 17 for(i=0;i<n;i++) 18 { 19 scanf("%I64d",&ai[i]); 20 } 21 sort(ai,ai+n,cmp); 22 for(i=0;i<n;i++) 23 { 24 if(l>0) 25 { 26 l-=ai[i]; 27 num++; 28 } 29 else 30 { 31 break; 32 } 33 } 34 if(i==n&&l>0) 35 { 36 printf("impossible\n"); 37 } 38 else 39 printf("%d\n",num); 40 } 41 return 0; 42 }
作者: 点A点C
出处: http://www.cnblogs.com/ACshasow/>
关于作者:游戏开发、算法研究,请多多赐教!
本文版权归作者(点A点C)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(572779130@qq.com)咨询.