Balala Power!

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 4124    Accepted Submission(s): 1004

Problem Description

Talented Mr.Tang has n
strings consisting of only lower case characters. He wants to charge
them with Balala Power (he could change each character ranged from a to z into each number ranged from 0 to 25,
but each two different characters should not be changed into the same
number) so that he could calculate the sum of these strings as integers
in base 26 hilariously.
Mr.Tang
wants you to maximize the summation. Notice that no string in this
problem could have leading zeros except for string "0". It is guaranteed
that at least one character does not appear at the beginning of any
string.
The summation may be quite large, so you should output it in modulo 109+7.
Input
The input contains multiple test cases.
For each test case, the first line contains one positive integers n, the number of strings. (1≤n≤100000)
Each of the nextlines contains a string si consisting of only lower case letters. (1≤|si|≤100000,∑|si|≤106)
Output
For each test case, output "Case #x: y" in one line (without quotes), where x indicates the case number starting from 1 and y denotes the answer of corresponding case.
Sample Input
1
a
2
aa
bb
3
a
ba
abc
Sample Output
Case #1: 25
Case #2: 1323
Case #3: 18221
Source
题意:给出一些字符串,由小写字母构成,用26(0-25)进制的数代替字母,不同字母不能相同。求转化后的26进制数最大为多少,结果对1e9+7取模。长度大
于1的串结果不能有前导0,除了单个字符.
【思路】:统计每个字符所在位,和其中的个数,以a字符为例。统计结果为
a[0]26^0+a[1]26^1+a[2]x2+.....+a[n-1]26^(n-1),其中a[i]代表a在第i位出现的次数
转化使得a[i]<26,变成x[0]26^0+x[1]26^1+...+x[n-1]26^(n-1)+x[n]26^(n)+...,
每个字符如此操作,谁取得最高位,这个字符就为25,第二高位为24,......,
排个序就可以了。如果出现前导0,从排序好的序列,从前往后找到可以为0的第一个字符,因为能作为0,它的x[i]26^(i)要越小,结果越大
 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<string.h>
#include<set>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<cmath>
typedef long long ll;
typedef unsigned long long LL;
using namespace std;
const double PI=acos(-1.0);
const double eps=0.0000000001;
const int N=+;
const ll mod=1e9+;
ll num[][N];
ll sum[N];
ll val[N];
int vis[N];
int a[N];
int t;
void init(){
val[]=;
for(int i=;i<=N;i++){
val[i]=val[i-]*%mod;
}
}
bool cmp(int a,int b){
for(int i=t-;i>=;i--){
if(num[a][i]!=num[b][i])
return num[a][i]<num[b][i];
}
}
int main(){
int n;
int tt=;
init();
string s;
while(scanf("%d",&n)!=EOF){
t=;
memset(vis,,sizeof(vis));
memset(num,,sizeof(num));
memset(sum,,sizeof(sum));
for(int i=;i<=n;i++){
cin>>s;
int len=s.size();
if(len>){
vis[s[]-'a']=;
}
for(int j=;j<len;j++){
num[s[j]-'a'][len-j]++;
sum[s[j]-'a']+=val[len-j];
sum[s[j]-'a']%=mod;
}
t=max(t,len);
}
for(int i=;i<;i++){
for(int j=;j<=t;j++){
num[i][j+]+=num[i][j]/;
num[i][j]%=;
}
t++;
while(num[i][t]){
num[i][t+]+=num[i][t]/;
num[i][t++]%=;
}
a[i]=i; }
sort(a,a+,cmp);
int flag;
for(int i=;i<;i++){
if(vis[a[i]]==){
flag=a[i];
break;
}
}
ll ans=;
int x=;
for(int i=;i>=;i--){
if(a[i]!=flag){
ans=ans+((x--)*sum[a[i]]%mod);
ans=ans%mod;
}
}
printf("Case #%d: %d\n",tt++,ans);
}
}

2017 Multi-University Training Contest - Team 1 1002&&hdu 6034的更多相关文章

  1. 2017 Multi-University Training Contest - Team 1 1002&&HDU 6034 Balala Power!【字符串,贪心+排序】

    Balala Power! Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  2. 2017 Multi-University Training Contest - Team 9 1002&&HDU 6162 Ch’s gift【树链部分+线段树】

    Ch’s gift Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  3. 2017 Multi-University Training Contest - Team 9 1005&&HDU 6165 FFF at Valentine【强联通缩点+拓扑排序】

    FFF at Valentine Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  4. 2017 Multi-University Training Contest - Team 9 1004&&HDU 6164 Dying Light【数学+模拟】

    Dying Light Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  5. 2017 Multi-University Training Contest - Team 9 1003&&HDU 6163 CSGO【计算几何】

    CSGO Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  6. 2017 Multi-University Training Contest - Team 9 1001&&HDU 6161 Big binary tree【树形dp+hash】

    Big binary tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  7. 2017 Multi-University Training Contest - Team 1 1003&&HDU 6035 Colorful Tree【树形dp】

    Colorful Tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  8. 2017 Multi-University Training Contest - Team 1 1006&&HDU 6038 Function【DFS+数论】

    Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  9. 2017 Multi-University Training Contest - Team 1 1011&&HDU 6043 KazaQ's Socks【规律题,数学,水】

    KazaQ's Socks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

随机推荐

  1. 03-Servlet 体系结构知识梳理

    一.Servlet体系结构 Java Web应用是基于Servlet规范运行,Servlet顶层类的关联如下图: 从图可看出,Servlet规范基本围绕这几个类运行,其中,与Servlet主动关联的有 ...

  2. React-Native WebView动态加载字体

    背景 使用react-native构建的iOS/Android双端APP,通过WebView加载本地页面,需要根据服务器提供的字体列表实现下载和动态加载. 本地字体检查 有些字体手机操作系统已经提供了 ...

  3. Tomcat服务器安装与第一个jsp网页程序

    1.安装tomcat服务器之前需要,先安装相应版本的jdk,个人理解Tomcat的大部分功能是使用了java的 jdk jar包的. jdk包下载方式网上可以查到 下载完后可以解压到一个指定目录,并在 ...

  4. 查看APK包名签名等信息

    有些游戏第三方比如分享需要配置游戏包名和签名,不同渠道包名签名又不同,所以时常需要查看不同apk包等签名信息,之前是使用等微博开放平台的手机客户端查看apk签名,前提是知道包名,网上找了下查看签名和包 ...

  5. block要用copy修饰,还是用strong

    栈区与堆区 block本身是像对象一样可以retain,和release.但是,block在创建的时候,它的内存是分配在栈(stack)上,而不是在堆(heap)上.他本身的作于域是属于创建时候的作用 ...

  6. / Vijos / 题库 /1250 / 最勇敢的机器人

    / Vijos / 题库 /1250 / 最勇敢的机器人 借鉴博客:http://www.cnblogs.com/chty/p/5830516.html 背景 Wind设计了很多机器人.但是它们都认为 ...

  7. 1.2 Java“白皮书”的关键术语

        Java的设计者已经编写了颇有影响力的“白皮书”,来解释设计的初衷以及完成的情况,并且发布了一个简短的摘要.这个摘要用下面11个关键术语进行组织: 简单性 面向对象 分布式 健壮性 安全性 体 ...

  8. 《Java JDK 8 学习笔记》序

    摘录自<Java JDK 8 学习笔记> 翻开一本书,无非是想从书中得到知识,只是为何你要得到书中的知识,才是我想知道的答案,而这个答案决定了你在取得知识的过程中是否快乐! 多数人在取得知 ...

  9. scrapy——3 crawlSpider——爱问

    scrapy——3  crawlSpider crawlSpider 爬取一般网站常用的爬虫类.其定义了一些规则(rule)来提供跟进link的方便的机制. 也许该spider并不是完全适合您的特定网 ...

  10. CentOS7版本的新特性

    综述 XFS  比 EXT 4更适合大文件处理,但消耗的CPU资源是EXT4的两倍 XFS 最大支持单文件16TB ,EXT4:50TB 最小1GB/建议每个逻辑CPU 1GB 逻辑CPU:核数,而非 ...