#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. 数组循环移动 空间复杂度O(1)

    ---恢复内容开始--- 题目大意: 输入元素个数,输入数组,输入右移步数,输出结果: 基本思路: 可以把数组(从下标为0开始存储)看成两部分,分别是[0,n-step-1],[n-step,n-1] ...

  2. Vue中的作用域插槽

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. php操作redis--字典(hash)篇

    常用函数:hSet,hGet,hGetAll等. 应用场景:存储用户信息对象数据,包括id,姓名,年龄和生日,通过用户id来获取姓名,年龄等信息. 连接 $redis = new Redis(); $ ...

  4. 基础课(一)Cisco Packet Tracer Student模拟器简单的运用

    一.相同设备之间用交叉线,不同设备之间用直通线 如上图中的简单的两个PC机相连,交叉线相连的两个PC机是能ping同,直通线相连的两台PC机不通,ipconfig可以查看本机设备的网络配置 time= ...

  5. DOM学习总结(四)DOM修改

    DOOM修改 找到标签之后就可以对它进行修改了可以修改:1.改变HTML元素 比如说把 p 改为 span2.改变HTML属性 比如说 id class3.改变CSS样式 比如说改变字体颜色4.添加或 ...

  6. NOIp2018集训test-10-23

    上午考了一套sb题,但是没有人AK.李巨290虐场. 下午又考了一套sb题,李巨AK虐场.%%% T1 % 中国剩余定理好像做不了啊,我一直在想如何用CRT做,然后就GG了. 然而正解是bike当初说 ...

  7. AcWing 203. 同余方程 (线性同余方程)打卡

    求关于x的同余方程 ax ≡ 1(mod b) 的最小正整数解. 输入格式输入只有一行,包含两个正整数a,b,用一个空格隔开. 输出格式输出只有一行,包含一个正整数x,表示最小正整数解. 输入数据保证 ...

  8. ionic学习使用笔记(一) 版本更新及创建项目时遇到的问题解决

    最近开始用ionic开发项目,虽然去年的时候用ionic 2.0 开发过公司的项目,不过现在的ionic已经升级到了ionic framework 3.0 了.而且还有个 ionic-cli . 使用 ...

  9. Nginx拓展功能合集

    一:NGINX跨域解决方式 #是否允许请求带有验证信息 add_header Access-Control-Allow-Credentials true; #允许跨域访问的域名,可以是一个域的列表,也 ...

  10. spring--Springmvc中@Autowired注解与@Resource注解的区别

    Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resour ...