HDU-2017 多校训练赛1-1002-Balala Power!
来源:互联网 发布:java 抽象方法 static 编辑:程序博客网 时间:2024/05/16 06:52
ACM模版
描述
题解
这个题,是我的一个痛点……真心不难,可是我无限 CE 啊……
思路上,很简单,判断每个字母的贡献,根据贡献排行进行分配,注意前缀不能为
可是一开始我就无限
代码
One:
// CE//#include <iostream>//#include <algorithm>//#include <string>//#include <cstring>//#include <cstdio>////using namespace std;////const int MAXK = 26;//const int MAXS = 1e5 + 10;//const int MOD = 1e9 + 7;////int n, cnt;//int vis[MAXK];//string s;////struct xxx//{// int pos;// int len;// int num[MAXS];//} Num[MAXK];////bool cmp(const xxx &a, const xxx &b)//{// if (a.len != b.len)// {// return a.len > b.len;// }// for (int i = a.len; i > 0; i--)// {// if (a.num[i] != b.num[i])// {// return a.num[i] > b.num[i];// }// }// // return a.num[0] > b.num[0];//}////int main(int argc, const char * argv[])//{// int ce = 1;//// while (cin >> n)// {// cnt = 25;// memset(vis, 0, sizeof(vis));// memset(Num, 0, sizeof(Num));// for (int i = 0; i < MAXK; i++)// {// Num[i].pos = i;// }// // for (int i = 0; i < n; i++)// {// cin >> s;// if (s.length() > 1)// {// vis[s[0] - 'a'] = 1;// }// // for (int j = 0, k = (int)s.length(); j < s.length(); j++, k--)// {// int t = s[j] - 'a';// Num[t].num[k]++;// int x = k;// while (Num[t].num[x] == MAXK)// {// Num[t].num[x++] = 0;// Num[t].num[x]++;// }// Num[t].len = max(Num[t].len, x);// }// }// // sort(Num, Num + MAXK, cmp);// // if (vis[Num[MAXK - 1].pos])// {// int i = MAXK - 1;// for (; i >= 0; i--)// {// if (vis[i] == 0)// {// break;// }// }// xxx a = Num[i];// for (; i < MAXK - 1; i++)// {// Num[i] = Num[i + 1];// }// Num[MAXK - 1] = a;// }// // long long res = 0;// for (int i = 0; i < n; i++)// {// long long tmp = 0;// for (int j = Num[i].len; j > 0; j--)// {// tmp *= MAXK;// tmp += (long long)Num[i].num[j] * cnt;// tmp %= MOD;// }// cnt--;// res += tmp;// res %= MOD;// }// // cout << "Case #" << ce++ << ": " << res << '\n';// }// // return 0;//}
Two:
// AC#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;typedef long long ll;const int MAXN = 1e5 + 10;const int MAXK = 26;const int MOD = 1e9 + 7;struct node{ int pos; char num[MAXN];} Num[MAXK + 1];int vis[MAXK];bool cmp(node &A, node &B){ for (int i = MAXN - 1; i > 0; i--) { if (A.num[i] != B.num[i]) { return A.num[i] < B.num[i]; } } return A.num[0] < B.num[0];}int n;char str[MAXN];int main(){ int ce = 1; while (~scanf("%d", &n)) { for (int i = 0; i < MAXK; i++) { vis[i] = 0; Num[i].pos = i; for (int j = 0; j < MAXN; j++) { Num[i].num[j] = 0; } } int x, y; for (int i = 0; i < n; i++) { scanf("%s", str); int len = (int)strlen(str); if (len > 1) // 前置标记 { vis[str[0] - 'a'] = 1; } for (int j = 0 ; j < len; j++) { x = str[j] - 'a'; y = len - j - 1; Num[x].num[y]++; while (Num[x].num[y] == MAXK) { Num[x].num[y++] = 0; Num[x].num[y]++; } } } sort(Num, Num + MAXK, cmp); int op = -1; ll ans = 0, tmp, mul; for (int i = 0; i < MAXK; i++) { if (vis[Num[i].pos] == 0) { op = i; break; } } for (int i = 0; i < MAXK; i++) { tmp = 0; mul = 0; if (i == op) { mul = 0; } else if (i < op) { mul = i + 1; } else { mul = i; } for (int j = MAXN - 1; j >= 0; j--) { tmp = (tmp * MAXK) % MOD; tmp = (tmp + (ll)Num[i].num[j] * mul) % MOD; } ans = (ans + tmp) % MOD; } printf("Case #%d: %lld\n", ce++, ans); } return 0;}
阅读全文
1 0
- HDU-2017 多校训练赛1-1002-Balala Power!
- HDU 6043 (2017 多校训练赛1 1002) Balala Power!
- 【多校训练】hdu 6034 Balala Power!
- 2017 多校训练第一场 HDU 6034 Balala Power!
- HDU 2017 多校联合训练赛1 1002 6034 Balala Power 排序
- HDU-2017 多校训练赛6-1002-Mindis
- HDU-2017 多校训练赛8-1002-Battlestation Operational
- HDU-2017 多校训练赛10-1002-Array Challenge
- HDU-2017 多校训练赛1-1006-Function
- HDU-2017 多校训练赛1-补题
- HDU-2017 多校训练赛1-1003-Colorful Tree
- HDU 2017 多校联赛 1002 Balala Power!
- 2017 HDU 多校联合赛 Balala Power!
- HDU-2017 多校训练赛2-1009-TrickGCD
- HDU-2017 多校训练赛2-1003-Maximum Sequence
- HDU-2017 多校训练赛2-1011-Regular polygon
- HDU-2017 多校训练赛2-补题
- HDU-2017 多校训练赛2-1006-Funny Function
- 设计模式学习—命令模式
- 大数据入门基础:Hadoop简介
- 网易2016研发工程师编程题--完全解析
- 从概念到底层技术,一文看懂区块链架构设计(附知识图谱)
- #425
- HDU-2017 多校训练赛1-1002-Balala Power!
- Linux服务器上监控网络带宽的18个常用命令
- js全国城市三级联动
- nyoj括号配对问题
- 数据结构之线性表
- [android-wifi]开启,扫描与连接相关流程
- vue上传图片组件编写
- 对hibernate List一对多中list-index的理解
- Spark成长之路(11)-ngram