POJ 2291 Rotten Ropes【贪心】

题意: 给你 n 个绳子,从里面选出任意根绳子,求最大承受力,

    当承受力大的和小的放在一起时,每个绳子的承受力和小的一样,

分析: 先对绳子排序,然后求出以每个绳子为最小承受力的绳子的最大值。

View Code
#include<stdio.h>
#include<stdlib.h>
int cmp(const void*p1,const void*p2)
{
    return *(int*)p1-*(int*)p2;
}
int a[10005];
int main()
{
    int t,n,i;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(i=0;i<n;i++)
            scanf("%d",&a[i]);
        qsort(a,n,sizeof(a[0]),cmp);
        for(i=0;i<n;i++)
            a[i]=a[i]*(n-i);
        qsort(a,n,sizeof(a[0]),cmp);
        printf("%d\n",a[n-1]);
    }
    return 0;
}

 

posted @ 2012-04-28 19:58  'wind  阅读(185)  评论(0编辑  收藏  举报