[恢]hdu 2124

2011-12-16 06:40:40

地址:http://acm.hdu.edu.cn/showproblem.php?pid=2124

题意:用n个长度各不相同的方块堵住长度为L的墙。可以锯,问最少需要多少块。

mark:简单题,贪心。排序即可。

wa了几百次!!!搞了40分钟!!!尼玛没考虑到impossible的时候数组越界啊我日!!!太2了。条件i < n+1 没写。

其实还有一个bug,就是n==0的情况。不过ac了,就不鸟它了。

网上说要用long long,其实int都可以过的。。。

# include <stdio.h>
# include <stdlib.h>

int a[610] ;
int cmp(const void *a, const void *b)
{
return *(int*)b - *(int*)a ;
}


int main ()
{
int i, L, n ;
while (~scanf ("%d%d", &L, &n))
{
for (i = 1 ; i <= n ; i++)
scanf ("%d", a+i) ;
qsort(a+1, n, 4, cmp) ;
for (i = 1 ; i <= n ;i++)
{
a[i] += a[i-1] ;
if (a[i] >= L)
break ;
}
if (i < n+1 && a[i] >=L) printf ("%d\n", i) ;
else puts ("impossible") ;
}
}



posted @ 2012-01-06 17:18  Seraph2012  阅读(208)  评论(0编辑  收藏  举报