#include <bits/stdc++.h>
#include <iostream>
using namespace std;
const int MAXN = 1e5+;
const long long mod = 1e9+;
int n;
int maxj;
struct node
{
int id;
int num[MAXN]={};
bool operator < (const node &a)const
{
for(int j = maxj; j >= ; --j)
if(num[j] != a.num[j])
return num[j] > a.num[j];
return ;
}
} p[];
string s[MAXN];
long long num[];
long long k[MAXN];
int book[];
int main()
{
ios::sync_with_stdio(false);
k[] = ;
for(int i = ; i <= ; ++i)k[i] = (k[i-]*)%mod; int ca = ;
maxj=;
while(cin>>n)
{ for(int i = ; i < ; ++i)
{
book[i]=;
for(int j=; j<=maxj; j++)p[i].num[j]=;
p[i].id = i;
} for(int i = ; i < n; ++i)
{
cin>>s[i];
int l = s[i].size();
for(int ii = l-,j=; ii >=; --ii,++j)
{
if(ii==)book[s[i][ii]-'a']=;
int t = s[i][ii]-'a';
p[t].num[j]++;
}
} maxj=;
for(int i = ; i < ; ++i)
{
for(int j = ; j <= ; ++j)
{
p[i].num[j+] += p[i].num[j]/;
p[i].num[j]%=;
if(p[i].num[j]>)maxj=max(j, maxj);
}
}
sort(p,p+); int i;
if(book[p[].id])
{
for(i=; i>=; i--)if(book[p[i].id]==)break;
p[]=p[i];
for(; i<; i++)p[i]=p[i+];
}
for(int i = ; i >= ; --i)num[p[-i].id] = i; //printf("%d\n",p[0].id);
long long ans = ;
for(int i = ; i < n; ++i)
{
int l = s[i].size();
for(int j = ; j < l; ++j)
{
//printf("%d\n", num[s[i][j]-'a']);
ans = (ans+num[s[i][j] -'a']*k[l--j]%mod)%mod;
}
}
cout<<"Case #"<<++ca<<": "<<ans<<endl;
}
return ;
}

模拟字典序排序——hdu6034的更多相关文章

  1. PTA数据结构与算法题目集(中文) 7-37 模拟EXCEL排序 (25 分)

    PTA数据结构与算法题目集(中文)  7-37 模拟EXCEL排序 (25 分) 7-37 模拟EXCEL排序 (25 分)   Excel可以对一组纪录按任意指定列排序.现请编写程序实现类似功能. ...

  2. 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】

    方法1:通过get()方法获取属性值 package com.sxd.test.controller; public class FirstCa{ private Integer num; priva ...

  3. Leetcode 385.字典序排序

    字典序排序 给定一个整数 n, 返回从 1 到 n 的字典顺序. 例如, 给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] . 请尽可能的优化算法的时间复杂度和 ...

  4. 微信支付MD5签名算法C#版,ASCII码字典序排序0,A,B,a,b

    /// <summary> /// 微信支付MD5签名算法,ASCII码字典序排序0,A,B,a,b /// </summary> /// <param name=&qu ...

  5. UVA215-Spreadsheet Calculator(模拟+拓扑排序)

    Problem UVA215-Spreadsheet Calculator Accept:401  Submit:2013 Time Limit: 3000 mSec Problem Descript ...

  6. 九度OJ 1159:坠落的蚂蚁 (模拟、排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1098 解决:277 题目描述: 一根长度为1米的木棒上有若干只蚂蚁在爬动.它们的速度为每秒一厘米或静止不动,方向只有两种,向左或者向右.如 ...

  7. java字典序排序

    import java.util.Comparator; import java.util.ArrayList; import java.util.Collections; public class ...

  8. leetCode 31.Next Permutation (下一个字典序排序) 解题思路和方法

    Next Permutation  Implement next permutation, which rearranges numbers into the lexicographically ne ...

  9. PAT甲题题解-1016. Phone Bills (25)-模拟、排序

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789229.html特别不喜欢那些随便转载别人的原创文章又不给 ...

随机推荐

  1. Ubuntu下串口工具

    一.Kermit 1.安装: sudo apt-get install ckermit 2.配置: sudo gedit /etc/kermit/kermrc 3.在文件末端添加如下内容 : set ...

  2. js 循环json

    var json= { "Type": "Coding", "Height":100 }; for (var key in json) { ...

  3. 谈谈你对本次2018级ACM新手赛的体会

    第一次参加这类比赛,挺有趣的,在现场磨了四个小时也没有全写出来,收获还是挺大的,至少意识到自己是能做到这些的(笑 今后也会多多努力

  4. Restrictions----用法

    ----------------------------------------方法说明 --------------------------QBC常用限定方法-------------------- ...

  5. @staticmethod和@classmethod区别

    转载自: https://www.cnblogs.com/wyongbo/p/python_static_method.html https://www.cnblogs.com/champaign/p ...

  6. go导入包

    go导入包 go有很多内置的函数,例如println,不需要引用即可使用.但是如果不借助go的标准库或者第三方库,我们能做的事情有限.在go中,使用关键字import在代码中导入一个包并使用. 修改我 ...

  7. INNODB存储引擎之缓冲池

    以下的资料总结自:官方文档和<MySQL技术内幕-INNODB存储引擎>一书. 对INNODB存储引擎缓冲池的那一段描述来自博文:http://www.ywnds.com/?p=9886说 ...

  8. renren-fast-vue-动态路由-添加路由-方式一(直接在原有结构上添加)

    在原有文件夹夹下新建自己的组件 在 mock/modules/sys-menu.js 中引入 实现路由的添加

  9. delphi 调用js脚本

    function ExecScript(Code,Lang,Func:string):string; var script:OleVariant; begin script:=CreateOleObj ...

  10. websocke和http的区别

    同:建立在TCP之上,同http一样通过TCP来传输数据 不同: HTTP协议为单向协议,即浏览器只能向服务器请求资源,服务器才能将数据传送给浏览器,而服务器不能主动向浏览器传递数据.分为长连接和短连 ...