HDU 6034 Balala Power!

来源:互联网 发布:php post数组长度限制 编辑:程序博客网 时间:2024/05/13 13:24

贪心,注意前导0

#include<bits/stdc++.h>using namespace std;const long long mod=1e9+7;const int MAXN=102000;int arr[30][MAXN],b[30],nzero[30],mp[30];char str[MAXN];long long mxlen;bool cmp(int x,int y){    for(int i=mxlen;i>=0;i--)    {        if(arr[x][i]!=arr[y][i])            return arr[x][i]<arr[y][i];    }    return 0;}int main(){    long long n,i,j,ans,len,cas=1,tmp;    while(~scanf("%lld",&n))    {        memset(nzero,0,sizeof(nzero));        memset(arr,0,sizeof(arr));        mxlen=0;        for(i=1;i<=n;i++)        {            scanf(" %s",&str);            len=strlen(str);            mxlen=max(mxlen,len);            if(len!=1)                nzero[str[0]-'a']=1;            for(j=0;j<len;j++)                arr[str[j]-'a'][len-j-1]++;        }        mxlen+=1000;        for(i=0;i<26;i++)        {            for(j=0;j<mxlen;j++)            {                arr[i][j+1]+=arr[i][j]/26;                arr[i][j]%=26;            }        }        for(i=0;i<26;i++)            b[i]=i;        sort(b,b+26,cmp);        memset(mp,-1,sizeof(mp));        for(i=0;i<26;i++)        {            if(!nzero[b[i]])            {                mp[b[i]]=0;                break;            }        }        tmp=1;        for(i=0;i<26;i++)        {            if(mp[b[i]]!=0)                mp[b[i]]=tmp++;        }        ans=0;        for(i=0;i<26;i++)        {            tmp=1;            for(j=0;j<mxlen;j++)            {                ans=(ans+tmp*arr[i][j]%mod*mp[i]%mod)%mod;                tmp=tmp*26%mod;            }        }        printf("Case #%lld: %lld\n",cas++,ans);    }}


原创粉丝点击