本文版权归点A点C和博客园共有,欢迎转载,但必须保留此段声明,并给出原文连接,谢谢合作!!!

hdu2124 Repair the Wall

题意:有个1*L的裂缝,有N个宽度为1长度为Ai的木板,木板可以锯断,用尽可能少的木板来修补裂缝,输出最少要用多少块木板,如果不能修不好输出impossible。

贪心,直接把木板从大到小排序,捡着大的用!

AC代码,0ms,742B

View Code
 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 }

posted on 2012-10-06 17:51  点A点C  阅读(98)  评论(0编辑  收藏  举报

导航