模拟字典序排序——hdu6034
#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的更多相关文章
- PTA数据结构与算法题目集(中文) 7-37 模拟EXCEL排序 (25 分)
PTA数据结构与算法题目集(中文) 7-37 模拟EXCEL排序 (25 分) 7-37 模拟EXCEL排序 (25 分) Excel可以对一组纪录按任意指定列排序.现请编写程序实现类似功能. ...
- 【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】
方法1:通过get()方法获取属性值 package com.sxd.test.controller; public class FirstCa{ private Integer num; priva ...
- Leetcode 385.字典序排序
字典序排序 给定一个整数 n, 返回从 1 到 n 的字典顺序. 例如, 给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] . 请尽可能的优化算法的时间复杂度和 ...
- 微信支付MD5签名算法C#版,ASCII码字典序排序0,A,B,a,b
/// <summary> /// 微信支付MD5签名算法,ASCII码字典序排序0,A,B,a,b /// </summary> /// <param name=&qu ...
- UVA215-Spreadsheet Calculator(模拟+拓扑排序)
Problem UVA215-Spreadsheet Calculator Accept:401 Submit:2013 Time Limit: 3000 mSec Problem Descript ...
- 九度OJ 1159:坠落的蚂蚁 (模拟、排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1098 解决:277 题目描述: 一根长度为1米的木棒上有若干只蚂蚁在爬动.它们的速度为每秒一厘米或静止不动,方向只有两种,向左或者向右.如 ...
- java字典序排序
import java.util.Comparator; import java.util.ArrayList; import java.util.Collections; public class ...
- leetCode 31.Next Permutation (下一个字典序排序) 解题思路和方法
Next Permutation Implement next permutation, which rearranges numbers into the lexicographically ne ...
- PAT甲题题解-1016. Phone Bills (25)-模拟、排序
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789229.html特别不喜欢那些随便转载别人的原创文章又不给 ...
随机推荐
- day05 python字典
day05 python 一.字典 1.dict 用{}表示, 存放的是: key:value (开发的都知道的是键值对数据,这样说) key: 关键字不能重复, 不 ...
- mongoose 常用数据库操作 查询
条件查询 Model.find(conditions, [fields], [options], [callback]) demo1 try.js var User = require(". ...
- Magento多语言注意事项
Magento一般使用CSV文件方式翻译国际化词条 一般用法是代码中: <?php echo Mage::helper("module_name")->__('Item ...
- MaxCompute新功能发布
2018年Q3 MaxCompute重磅发布了一系列新功能. 本文对主要新功能和增强功能进行了概述. 实时交互式查询:Lightning on MaxCompute 生态兼容:Spark on Max ...
- Yii2查询语句
Yii2常用的查询: Yii2原生查询: $request = Yii::$app->request; $shopid = $request->post('shopid'); $gps = ...
- springboot设置静态资源缓存一年
由于本人所在项目组,所用的项目是前后端分离的,前端是React 的SPA,每次打包都会新版本的静态文件. 然而,在有些时候,这些静态资源是不变的,故可以将资源缓存至用户本地,提升性能. 写法如下,需要 ...
- DOM学习总结(二)
一.什么是DOM属性 DOM属性简单来说就是HTML的属性值 二.常见的DOM属性有哪些? 1.innerHTML 属性 获取元素的内容,想要拿到某个元素的文本内容,直接在后面加 .innerHTML ...
- s13 day3作业
ha_proxy配置文件修改程序ha_file 为存储配置信息的文件.运行的时候对该文件进行操作.1.查询信息:用户输入域名,获得域名相关信息2.修改配置文件:用户输入的格式应该为 {"ba ...
- [7.18NOIP模拟测试5]砍树 题解(数论分块)
题面(加密) 又考没学的姿势……不带这么玩的…… 考场上打了个模拟 骗到30分滚粗了 稍加思考(滑稽)可将题面转化为: 求一个最大的$d$,使得 $\sum \limits _{i=1}^n {(\l ...
- Spring Boot跨域问题解决方案
@Configurationpublic class CorsConfig { @Bean public FilterRegistrationBean corsFilter() { UrlBasedC ...