/*
HDU 6034 - Balala Power! [ 大数进位,贪心 ]
题意:
给一组字符串(小写英文字母),将上面的字符串考虑成26进制数,每个字母分配一个权值,问这组数字加起来的和最大是多少?
要求每个数字不能有前导0,即每个字符串首位字符不能赋0
分析:
对于每个字符,将每个字符串按位相加,得到这个字符的一个每位上的数量的数组
将其看成一个大数,满26进位,然后排序,从高到低赋值,注意考虑0
*/
#include <bits/stdc++.h>
using namespace std;
#define LL long long
const LL MOD = 1000000007;
LL mp[150005][26];
int n, m;
char s[100005];
bool notz[26];
int val[26], a[26];
void up()
{
for (int j = 0; j < 26; j++)
{
for (int i = 0; i < m; i++) {
mp[i+1][j] += mp[i][j] / 26;
mp[i][j] %= 26;
}
while (mp[m][j]) {
mp[m+1][j] += mp[m][j] / 26;
mp[m][j] %= 26;
m++;
}
}
}
bool cmp(int a, int b) {
for (int i = m-1; i >= 0; i--) {
if (mp[i][a] != mp[i][b]) return mp[i][a] > mp[i][b];
}
return 0;
}
void solve()
{
for (int i = 0; i < 26; i++) a[i] = i;
sort(a, a+26, cmp);
for (int i = 25; i >= 0; i--)
if (!notz[a[i]]) {
val[a[i]] = 0; break;
}
int tmp = 25;
for (int i = 0; i < 26; i++)
if (val[a[i]] == -1) val[a[i]] = tmp--;
}
int main()
{
int tt = 0;
while (~scanf("%d", &n))
{
memset(notz, 0, sizeof(notz));
memset(mp, 0, sizeof(mp));
memset(val, -1, sizeof(val));
m = 0;
for (int i = 1; i <= n; i++)
{
scanf("%s", s);
int len = strlen(s);
if (len != 1) notz[s[0]-'a'] = 1;
m = max(m, len);
for (int i = 0; i < len; i++) mp[len-i-1][s[i]-'a']++;
}
up();
solve();
LL ans = 0;
for (int i = m-1; i >= 0; i--)
{
ans = ans * 26 % MOD;
for (int j = 0; j < 26; j++)
{
ans = (ans + (LL)mp[i][j]*val[j] % MOD) % MOD;
}
}
printf("Case #%d: %lld\n", ++tt, ans % MOD);
}
}

  

HDU 6034 - Balala Power! | 2017 Multi-University Training Contest 1的更多相关文章

  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. HDU 6034 Balala Power! —— Multi-University Training 1

    Talented Mr.Tang has nn strings consisting of only lower case characters. He wants to charge them wi ...

  3. hdu 6034 Balala Power!

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

  4. HDU 6034 Balala Power!(贪心+排序)

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

  5. 2017ACM暑期多校联合训练 - Team 1 1002 HDU 6034 Balala Power! (字符串处理)

    题目链接 Problem Description Talented Mr.Tang has n strings consisting of only lower case characters. He ...

  6. HDU 6034 Balala Power!【排序/进制思维】

    Balala Power![排序/进制思维] Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java ...

  7. HDU 6034 Balala Power! (贪心+坑题)

    题意:给定一个 n 个字符串,然后问你怎么给 a-z赋值0-25,使得给定的字符串看成26进制得到的和最大,并且不能出现前导0. 析:一个很恶心的题目,细节有点多,首先是思路,给定个字符一个权值,然后 ...

  8. HDU 6170 - Two strings | 2017 ZJUT Multi-University Training 9

    /* HDU 6170 - Two strings [ DP ] | 2017 ZJUT Multi-University Training 9 题意: 定义*可以匹配任意长度,.可以匹配任意字符,问 ...

  9. hdu 6301 Distinct Values (2018 Multi-University Training Contest 1 1004)

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

随机推荐

  1. Oracle 的查询-scott用户介绍

    scott用户 密码tiger 解锁scott用户 alter user scott account unlock; 解锁scott密码(也可重置密码) alter user scott identi ...

  2. POJ - 3687 Labeling Balls (拓扑)

    (点击此处查看原题) 题意 此处有n盏灯,编号为1~n,每盏灯的亮度都是唯一的,且在1~n范围之间,现已知m对灯之间的关系:a b ,说明灯a的亮度比灯b小,求出每盏灯的亮度,要求字典序最小(编号小的 ...

  3. Java开源网页抓取工具httpClient以及jsoup

    网上看到不错的Java网页抓取工具和库 先记录一下 使用java开源工具httpClient及jsoup抓取解析网页数据

  4. 并不对劲的复健训练-bzoj5253:loj2479:p4384:[2018多省联考]制胡窜

    题目大意 给出一个字符串\(S\),长度为\(n\)(\(n\leq 10^5\)),\(S[l:r]\)表示\(S_l,S_{l+1}...,S_r\)这个子串.有\(m\)(\(m\leq 3\t ...

  5. CSP2019螺旋升天爆炸记

    Day -N 半年没碰OI的我终于又回到了这个熟悉又陌生的地方.然后颓废了两天就过了初赛? 初赛rp爆棚考了全校第一,然并卵 然后就是打了遍树状数组模板,写挂了(没错我现在连树状数组都会写挂) 看一眼 ...

  6. ModbusRtu通信报文详解【二】

    这里接着上一篇内容对ModbusRtu的通信报文做个详细描述: [1]强制单个线圈 功能码:05H [2]预置单个寄存器 功能码:06H [3]强制多个线圈 功能码;0FH [4]预置多个寄存器 功能 ...

  7. 【原创】大叔经验分享(56)hue导出行数限制

    /opt/cloudera/parcels/CDH/lib/hue/apps/beeswax/src/beeswax/conf.py # Deprecated DOWNLOAD_CELL_LIMIT ...

  8. centos配置发送邮件

    邮件已经可以接收到了 CentOS下发送邮件有很多种方法,这里采用比较简单的mail客户端,配置第三方邮件服务商,例如:163.com 1.安装所用软件 yum install mailx sendm ...

  9. C++内存分配和分区

    1.分配方式 静态分配: 静态区(全局区),分配全局变量.静态变量优先于main函数. 动态分配: (1)自动分配:栈区(2)手动分配:堆区,(malloc,free) (new,delete) 2. ...

  10. python 常见内置函数setattr、getattr、delattr、setitem、getitem、delitem

    常见内置函数 内置函数:在类的内部,特定时机自动触发的函数 示例1:setattr.getattr.delattr class Person: # def __init__(self, name): ...