HDU 5504 GT and sequence(贪心)

来源:互联网 发布:数据可视化软件 编辑:程序博客网 时间:2024/05/20 00:52

题目大意:给定一个序列,任选出序列中的数字,并输出其组成的最大数.


思路:就是一个简单的贪心吧,但是注意各组数据的各种坑.如当只有一个数的时候,permutation中含有0,

其中有负数,0,正数等等情况.



#include<iostream>#include<cstdio>#include<cstring>#include<map>#include<algorithm>#define ll __int64#define inf 0x3f3f3f3fusing namespace std;ll a[1000000];int main(){    ll n,m,i,j,k,mi,s;    ll cla,zero,fu;    scanf("%I64d",&cla);    while(cla--)    {        mi=-inf;zero=fu=0;        s=1;        scanf("%I64d",&n);bool vis=false;        for(i=0;i<n;i++)        {            scanf("%I64d",a+i);            if(a[i]!=0)                vis=true;            if(a[i]<0)            {                fu++;                mi=max(mi,a[i]);            }            if(!a[i])                zero++;        }        if(!vis)        {            printf("0\n");continue;        }        if(n==1)        {            printf("%I64d\n",a[0]);continue;        }        if(fu==1&&(fu==n-zero))        {            printf("0\n");            continue;        }        for(i=0;i<n;i++)        {            if(a[i])                s*=a[i];        }        if(s<0)        {            printf("%I64d\n",s/mi);continue;        }        printf("%I64d\n",s);    }    return 0;}


0 0
原创粉丝点击