HDU 6034 - Balala Power! | 2017 Multi-University Training Contest 1
/*
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的更多相关文章
- 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 ...
- 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 ...
- hdu 6034 Balala Power!
Balala Power! Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- HDU 6034 Balala Power!(贪心+排序)
Balala Power! Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 2017ACM暑期多校联合训练 - Team 1 1002 HDU 6034 Balala Power! (字符串处理)
题目链接 Problem Description Talented Mr.Tang has n strings consisting of only lower case characters. He ...
- HDU 6034 Balala Power!【排序/进制思维】
Balala Power![排序/进制思维] Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java ...
- HDU 6034 Balala Power! (贪心+坑题)
题意:给定一个 n 个字符串,然后问你怎么给 a-z赋值0-25,使得给定的字符串看成26进制得到的和最大,并且不能出现前导0. 析:一个很恶心的题目,细节有点多,首先是思路,给定个字符一个权值,然后 ...
- HDU 6170 - Two strings | 2017 ZJUT Multi-University Training 9
/* HDU 6170 - Two strings [ DP ] | 2017 ZJUT Multi-University Training 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 ...
随机推荐
- 烯烃(olefin) 题解
题面 对于每个点,我们可以用一次dfs求出这个点到以这个点为字树的最远距离和次远距离: 然后用换根法再来一遍dfs求出这个点到除这个点子树之外的最远距离: 显然的,每次的询问我们可以用向上的最大值加向 ...
- git回退
以前,如果是要去除某一块功能,我都是选择性删除,选择性注释,然后前后逻辑各种查看,各种比较.每一次,改完这些我总感觉心好累啊!!!然后,我就发现了 Git 一个非常强大的功能:回滚.当然我还是喜欢叫它 ...
- C Looooops
看了半天的同余 扩展欧几里得 练练手 C Looooops Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 27079 A ...
- mvc布局(一)
negut添加Optimization @System.Web.Optimization.Styles.Render( "~/Content/styles/css/font-awesome. ...
- promise使用的正确方式
一开始恨不能理解下面的代码,为什么可以一直then下去,什么时候要直接return xxx,什么时候return 一个promise,什么时候用Promise.resolve() function ...
- PHP之开发环境搭建
日常开发中,环境的搭建是我们开发的基础,这里介绍几种快速搭建PHP开发环境的方式. 1)lnmp一键安装包[https://lnmp.org] LNMP一键安装包是一个用Linux Shell编写的可 ...
- Mac之常见问题
1. 在命令行下无法使用ll命令 需要设置命令的别名. 文件位置:-/.bash_profile source ~/.profile export PATH="/usr/local/opt/ ...
- 高德地图API-设置考勤范围
<template> <div class="page-setting-setgps"> <!--head--> <div class=& ...
- Anaconda--机器学习环境搭建
使用Anaconda为机器学习和深度学习设置Python环境 一.安装Anaconda,并更新到最新版本 1.Anaconda 安装: 官方网站下载地址 https://www.anaconda.co ...
- zookeeper--为分布式应用提供协调服务
1.概述 zookeeper是一个开源的.分布式的.为分布式应用提供协调服务的Apache项目 zookeeper的工作机制 zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服 ...