Balala Power! HDU
来源:互联网 发布:绿色傲剑金蛇数据 编辑:程序博客网 时间:2024/06/02 06:39
很烦的一道题,当时比赛的时候wa了9次,TLE了10+次,还是没过;
第一种思路是将所有的字母都化为到个位,然后一边取模,在打表之后时间够了,但是一直wa,也没找到错的地方;
第二种思路是用26个字符串固定26个字母,就是考虑进位的地方有点繁琐,但一直TLE;
最后时间到了。。
在补题的时候,就试着用数组代替字符串,然后重复操作,再做到找到最小的可做0的一位做0,还是选择 C++ 提交还是TLE,后来同样的代码改了G++就过了。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; const int mod = 1e9+7; const int maxn = 1e5+5; ll fac[maxn] = {1}; int Hash[27]; bool lead[27]; char str[maxn]; void init() { for(int i = 1; i < maxn; i++) fac[i] = fac[i-1]*26%mod; } struct node { int cnt[maxn]; int id; bool operator < (const node &a) const { for(int i = maxn-1; i >= 0; i--) { if(cnt[i] > a.cnt[i]) return 1; else if(cnt[i] < a.cnt[i]) return 0; else ; } } }a[27]; int main(void) { int n, ca = 1; init(); while(~scanf("%d", &n)) { memset(a, 0, sizeof(a)); memset(Hash, -1, sizeof(Hash)); memset(lead, 0, sizeof(lead)); for(int i = 1; i <= n; i++) { scanf(" %s", str); int len = strlen(str); if(len != 1) lead[str[0]-'a'] = 1; for(int i = 0; i < len; i++) a[str[i]-'a'].cnt[len-i-1]++; } //进位操作,满26个等与一个下一位 for(int i = 0; i < 26; i++) { for(int j = 0; j < maxn; j++) { if(a[i].cnt[j] >= 26) { a[i].cnt[j+1] += a[i].cnt[j]/26; a[i].cnt[j] %= 26; } } a[i].id = i; } sort(a, a+26); for(int i = 0; i < 26; i++) Hash[a[i].id] = 26-i-1; for(int i = 0; i < 26; i++) //前导0找最小的可以做0的位来放0 if(lead[a[i].id] && Hash[a[i].id] == 0) { for(int j = 25; j >= 0; j--) { if(!lead[a[j].id]) { for(int k = 25; k >= j+1; k--) Hash[a[k].id] = Hash[a[k-1].id]; Hash[a[j].id] = 0; break; } } break; } ll ans = 0; for(int i = 0; i < 26; i++) { for(int j = 0; j < maxn; j++) { ans = (ans+fac[j]*a[i].cnt[j]*Hash[a[i].id]%mod)%mod; } } printf("Case #%d: %lld\n", ca++, ans); } return 0; }
看来还是太年轻。。如果TLE就G++,C++都交一边
阅读全文
0 0
- 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!
- Balala Power! HDU
- HDU 6034 Balala Power!
- HDU-Balala Power!
- hdu 6034 Balala Power!
- Balala Power! HDU
- hdu 6034 Balala Power!(贪心)
- 类和对象
- Oil Deposits(DFS深搜)
- JVM内存区
- 可变参数和泛型--->堆污染
- 操作系统之进程与线程3——内核级线程及切换(未完成)
- Balala Power! HDU
- 3.numpy基础使用
- 求最大公约数-辗转相除法-更相减损术
- Java对象的内存分配过程
- 17暑假多校联赛1.11 HDU 6043 KazaQ's Socks
- springboot+mybatis+gradle在idea和oracle使用
- Android获取路由ip
- CentOS配置日志集中管理
- 从源码角度解析View的绘制过程