hdu 6034 Balala Power!
2017-07-26 09:23
381 查看
[]http://acm.hdu.edu.cn/showproblem.php?pid=6034]题目链接
题意: 给你n个字符串, 每个字符串中的小写字母(仅有小写)代表一个唯一的权值 0~26 , 输入输出都是26进制,输入答案并取模1e9+7。若有字母出现在字符串首部, 其值不能为零。
思路:求出每个字母的贡献值, 比较其大小,判断是否有首部为零的情况。
题意: 给你n个字符串, 每个字符串中的小写字母(仅有小写)代表一个唯一的权值 0~26 , 输入输出都是26进制,输入答案并取模1e9+7。若有字母出现在字符串首部, 其值不能为零。
思路:求出每个字母的贡献值, 比较其大小,判断是否有首部为零的情况。
#include <bits/stdc++.h> using namespace std; const int MAXN=100100; typedef long long LL; const int mod = 1000000007; char str[MAXN]; int num[50][MAXN]; LL a[MAXN]; int id[50]; int vis[50]; int Max; LL quan[50]; void init() { a[0]=1; for(int i=1; i<=100005; ++i) a[i]=a[i-1]*26%mod; } bool cmp(int a, int b) { for(int i=Max;i>=0;--i) if(num[a][i]!=num[b][i]) return num[a][i] > num[b][i];; return false; } int main() { int n; int Case=1; init(); while(~scanf("%d", &n)) { memset(num, 0, sizeof(num)); memset(vis, 0, sizeof(vis)); memset(quan, 0, sizeof(quan)); int kind=0; Max=0; for(int i = 1; i <= n; i++) { scanf("%s", str); int len = strlen(str); if(!vis[str[0]-'a']) kind++; vis[str[0]-'a'] = 2; for(int j = 0; str[j]; j++) { if(!vis[str[j]-'a']) vis[str[j]-'a'] = 1, kind++; num[str[j]-'a'][len-j-1]++; quan[str[j]-'a']+=a[len-j-1]%mod; if(num[str[j]-'a'][len-j-1]>=26) { num[str[j]-'a'][len-j-1]-=26; num[str[j]-'a'][len-j]++; if(num[str[j]-'a'][len-j+1]>=26) { num[str[j]-'a'][len-j+1]-=26; num[str[j]-'a'][len-j+2]++; } } } Max = max(Max, len + 10); } for(int i=0;i<26;++i) id[i]=i; sort(id, id+26, cmp); if(kind==26&&vis[id[25]]==2) { int i; for(i = 25; i >= 0; i--) if(vis[id[i]] != 2) break; for(int j = i; j < 25; j++) swap(id[j], id[j+1]); } LL ans=0; for(int i=0; i<26; ++i) { ans=(ans+quan[id[i]]*(25-i)) % mod; } printf("Case #%d: %lld\n", Case++, ans%mod); } return 0; }
相关文章推荐
- 17 多校 - 1 - 1002 - Balala Power! (HDU 6034)
- HDU 6034 Balala Power!
- 第一场 hdu 6034 Balala Power!
- HDU 6034 Balala Power!
- hdu 6034 Balala Power!(贪心)( 2017 Multi-University Training Contest - Team 1 )(无耻之sort)
- hdu 6034 Balala Power!(贪心)( 2017 Multi-University Training Contest - Team 1 )(无耻之sort)
- 2017 杭电多校联赛 1002 Balala Power!(数字替换字母)HDU 6034
- hdu 6034 Balala Power! (2017 Multi-University Training Contest - Team 1)
- HDU 6034 Balala Power!(大数进制)
- HDU-6034 Balala Power! - 2017 Multi-University Training Contest - Team 1(贪心)
- hdu 6034 Balala Power!(贪心)( 2017 Multi-University Training Contest - Team 1 )(无耻之sort)
- Balala Power! HDU - 6034 多校1
- hdu 6034 Balala Power!(贪心)( 2017 Multi-University Training Contest - Team 1 )(无耻之sort)
- HDU 6034 Balala Power!(贪心)
- hdu 6034 Balala Power!(贪心)( 2017 Multi-University Training Contest - Team 1 )(无耻之sort)
- 【HDU 6034】Balala Power!(贪心+进制转换)
- hdu 6034 B - Balala Power! 贪心
- hdu 6034 Balala Power!(贪心)( 2017 Multi-University Training Contest - Team 1 )(无耻之sort)
- (2017多校训练第一场)HDU - 6034 Balala Power! 贪心
- HDU 6034 Balala Power!(贪心)