hdu 6034 Balala Power!(DP)
来源:互联网 发布:加拿大北电网络市值 编辑:程序博客网 时间:2024/06/07 22:27
Balala Power!
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 998 Accepted Submission(s): 165
Problem Description
Talented Mr.Tang has
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
Input
The input contains multiple test cases.
For each test case, the first line contains one positive integersn , the number of strings. (1≤n≤100000)
Each of the nextn lines contains a string si consisting of only lower case letters. (1≤|si|≤100000,∑|si|≤106)
For each test case, the first line contains one positive integers
Each of the next
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
1a2aabb3abaabc
Sample Output
Case #1: 25Case #2: 1323Case #3: 18221#include<iostream>#include<algorithm>#include<cstdio>#include<cstdlib>#include<cstring>#include<vector>#include<map>//#include <bits/stdc++.h>using namespace std;const int N = 1e6+10;;typedef long long LL;const LL mod = 1e9+7;map<int,LL>q[30];char str[N];int vis[30], power[30];double dp[100000+7][28];vector<string>p;int a[N];struct node{ int id; LL cnt; double x; bool operator> (const node &A) { return x>A.x; }}p1[30];int cmp(node A,node B){ return A.x>B.x;}int main(){ int ncase=1, n; while(scanf("%d", &n)!=EOF) { memset(vis,0,sizeof(vis)); memset(dp,0,sizeof(dp)); memset(power,0,sizeof(power)); p.clear(); int l=0; for(int t=0;t<n;t++) { scanf("%s",str); vis[str[0]-'a']=1; int len=strlen(str); a[t]=len; l=max(l,len); //reverse(str,str+len); //cout<<str<<endl; p.push_back(str); for(int i=0;i<len;i++) dp[len-i-1][str[i]-'a']++; } for(int i=1;i<=l;i++) for(int j=0;j<26;j++) dp[i][j]+=(dp[i-1][j]/26.0); for(int i=0;i<26;i++) { p1[i].id=i,p1[i].x=dp[l][i]; } sort(p1,p1+26,cmp); for(int i=0;i<26;i++) power[p1[i].id]=25-i; int k=25; while(vis[p1[k].id]) { swap(power[p1[k].id],power[p1[k-1].id]); k--; } LL sum=0; int m=p.size(); for(int i=0;i<m;i++) { LL ans=0; for(int j=0;j<a[i];j++) { ans=(ans*26+power[p[i][j]-'a'])%mod; } sum=(sum+ans)%mod; } printf("Case #%d: %lld\n",ncase++,sum); } return 0;}
Balala Power!
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 998 Accepted Submission(s): 165
Problem Description
Talented Mr.Tang has
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
Input
The input contains multiple test cases.
For each test case, the first line contains one positive integersn , the number of strings. (1≤n≤100000)
Each of the nextn lines contains a string si consisting of only lower case letters. (1≤|si|≤100000,∑|si|≤106)
For each test case, the first line contains one positive integers
Each of the next
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
1a2aabb3abaabc
Sample Output
Case #1: 25Case #2: 1323Case #3: 18221
阅读全文
0 0
- hdu 6034 Balala Power!(DP)
- HDU-6034 Balala Power!
- [HDU]-6034 Balala Power!
- HDU 6034 Balala Power!
- hdu 6034 Balala Power!
- 【HDU 6034 Balala Power!】
- hdu 6034 Balala Power!
- HDU 6034 Balala Power!
- HDU 6034 Balala Power!
- hdu-6034-Balala Power!
- HDU-6034 Balala Power!
- hdu-6034-Balala Power!
- HDU 6034 Balala Power!
- HDU 6034 Balala Power!
- hdu 6034 Balala Power!
- HDU 6034 Balala Power! (贪心)
- HDU 6034 Balala Power!(贪心)
- HDU 6034 Balala Power!(贪心)
- li span 中多个长短不一的checkbox如何上下对齐排列
- OpenCV3.1.0安装contrib模块的方法
- pandas入门
- C语言:返回传入字符串的长度
- java8-01-lambda
- hdu 6034 Balala Power!(DP)
- 简易计算器(2)- 语法分析(不使用Yacc)
- java基础之流和序列化
- 索引算法
- LintCode判断一个数是不是回文数
- 栈和队列
- DQN-《Human-level control through deep reinforcement learning》译文
- java多线程之等待换性机制简单使用
- L2-020. 功夫传人 BFS