#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. 使用eclipse开发java web网页

    前面说了手动配置一个应用,手动配置可以更深入的理解web应用的分布,但是一般的编辑器没有语法错误提示,所以开发起来对于错误的寻找不太容易,效率相对较低,所以在理解清楚web项目的结构之后,我们使用ec ...

  2. Web前端/全栈核心(html5/css3/js/vue/react/angular/es6/node)观看笔记

    a标签中的超链接,需要加   http://    否则会出现页面找不到. iframe中添加a标签,a标签中的target属性可以控制即将打开的页面,在那个位置显示. _blank 在新窗口中打开被 ...

  3. leetcood学习笔记-20

    python字符串与列表的相互转换   学习内容: 1.字符串转列表 2.列表转字符串 1. 字符串转列表 str1 = "hi hello world" print(str1.s ...

  4. OpenGL Download

    { https://www.opengl.org/ }

  5. Java Number&Math类

    Java Number类 一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte.int.long.double等. 实例 int i = 5000; float gpa = 13.65 ...

  6. Yii2中自定义表单样式

    use yii\widgets\ActiveForm; <?php $form = ActiveForm::begin([ 'options' => ['class' => 'for ...

  7. linux IPC socket(2)

    使用bind来关联地址和套接字 #include <sys/types.h> #include <sys/socket.h> int bind(int sockfd, cons ...

  8. json格式化在线工具推荐

    现在系统对接基本都采用json格式的报文,杂乱无章的json让人看起来头大,这里推荐一款在线格式化json的工具, 工具地址: http://www.matools.com/json 这个在线Json ...

  9. P1537 弹珠

    P1537 弹珠 题目描述 玛莎和比尔各自有自己的弹珠收藏.他们想重新分配收藏品,使两人能平等拥有弹珠.如果所有的弹珠的价值相同,那么他们就可以平分.但不幸的是,有一些弹珠更大,或者更美丽,所以,玛莎 ...

  10. nginx代理一个服务器上所有域名

    1. 主配置文件不需要更改任何配置2. 在vhosts目录下需要建立两个文件,一个是servername 列表文件,一个是虚拟主机配置文件两个文件内容分别为 #() servername server ...