您的位置:首页 > 其它

[Codeforces] 389C - Fox and Box Accumulation

2014-02-04 08:53 316 查看
题意:有N个盒子,每个盒子上面可以放xi个盒子。问最少分几堆。

思路:xi从小到大贪心,最终得到最少几堆能放下,一开始我想的思路是xi从大到小贪心,后来验证思路错了。

#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
int main()
{
int n, i, j, a[100], tmp, flag;
while(~scanf("%d", &n))
{
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
qsort(a, n, sizeof(a[0]), cmp);
for(i = flag = 0; i < n; i++)
{
if(a[i] != -1)
{
tmp = 1;
for(j = i + 1; j < n; j++)
{
if(a[j] >= tmp && a[j] != -1)
{
tmp++;
a[j] = -1;
}
}
flag++;
}
}
printf("%d\n", flag);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  codeforces