2017多校1 b hdu 6034
来源:互联网 发布:写作起名软件 编辑:程序博客网 时间:2024/05/21 22:56
记录每个字母在每个位数出现的次数,直接用结构体记录并排序可能会超时,再建一个新的数组来排序。找出一个没出现在首位(单字母除外)的字母,其它按排序赋值
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 100000+10;const int mod = 1000000007;int alp[26][N];int fir[26];int vis[26];int num[26];int cnt = 0;bool cmp(int a,int b){ for(int i = N - 1; i >= 0; i--) { if(alp[a][i] > alp[b][i]) return true; else if(alp[a][i] < alp[b][i]) return false; } return false;}int main(){ int n; int tim = 1; while(~scanf("%d",&n)) { char op[N]; memset(alp,0,sizeof(alp)); memset(fir,0,sizeof(fir)); memset(vis,0,sizeof(vis)); memset(num,-1,sizeof(num)); for(int i = 0; i < n; i++) { scanf("%s",op); int len = strlen(op) - 1; for(int j = 0; j <= len; j++) { int d = op[j] - 'a'; if(j == 0 && len > 0) fir[d] = 1; alp[d][len - j] ++; vis[d] = 1; // cout << d <<" " <<len - j <<" "<<alp[d][len- j]<< endl; } } for(int i = 0; i <= 25; i++) { for(int j = 0; j <= N-1; j++) { if(alp[i][j] >= 26) { alp[i][j+1] += alp[i][j]/26; alp[i][j] %= 26; } } } int aa[26]; for(int i = 0; i < 26; i++) aa[i] = i; sort(aa,aa+26,cmp); for(int i = 25; i >= 0; i--) { int te = aa[i]; if(!fir[te]) { num[te] = 0; break; } } int biap = 25; for(int i = 0; i <= 25; i++) { int te = aa[i]; if(num[te] == -1) { num[te] = biap--; } } long long sum = 0; long long mul = 1; for(int i = 0; i <= N -1; i++) { for(int j = 0; j <= 25; j++) { sum = (sum+(alp[j][i]%mod)*(mul*num[j])%mod)%mod; } mul *= 26; mul %= mod; } printf("Case #%d: %lld\n",tim++,sum); }}
阅读全文
0 0
- 2017多校1 b hdu 6034
- HDU 5724/2016多校1B Chess
- hdu 1.2.1A+B Coming
- HDU 57242016多校Contest 1 B题【SG函数,题目input比较猥琐】
- HDU 3652 B-number
- HDU 2033 A+B
- HDU 2034 A-B
- hdu 1412 {A} + {B}
- HDU 1096 A+B
- HDU A^B
- HDU 1412 {A}+{B}
- hdu 1228A+B
- HDU 1412 ( {A} + {B} )
- HDU 1228 ( A + B )
- hdu 1288 A + B
- hdu 1228 A + B
- HDU 1229 A + B
- HDU 1412 {A}+{B}
- cfRound425B. Petya and Exam
- uva227 puzzle
- 图片边角形
- HDU1201-18岁生日
- DATAKIT.CrossManager.2017.1.Win32_64 2CD
- 2017多校1 b hdu 6034
- C/S、B/S架构的区别
- jQuery 选择器 first-child和first-of-type、 last-child和last-of-type的区别
- 两个栈实现一个队列
- AutoLayout 汇总
- 关于魅族手机html5与mui+HBuilder的链接
- laravel 获取上一次insert语句的主键id
- 如何用两个栈实现一个队列
- 算法训练 字符串变换