LA 6047 Perfect Matching 字符串哈希
一开始我用的Trie+计数,但是不是计多了就是计少了,后来暴力暴过去的……
看了别人的代码知道是字符串哈希,但是仍有几个地方不理解:
1.26^500溢出问题
2.没考虑哈希碰撞?
跪求指点!
1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 5 #define LL unsigned long long int 6 7 const int MAXN = 1010; 8 const int MAXLEN = 510; 9 10 int N; 11 char str[MAXN][MAXLEN]; 12 int len[MAXN]; 13 LL Hash[MAXN]; //原串哈希值 14 LL reHash[MAXN]; //逆转串哈希值 15 LL fac[MAXLEN]; 16 17 void init() 18 { 19 fac[0] = 1; 20 for ( int i = 1; i < MAXLEN; ++i ) 21 fac[i] = fac[i - 1] * 26; 22 return; 23 } 24 25 void chuli( int id ) 26 { 27 len[id] = strlen( str[id] + 1 ); 28 Hash[id] = 0; 29 for ( int i = 1; i <= len[id]; ++i ) 30 Hash[id] = Hash[id] * 26 + str[id][i] - 'a'; 31 32 reHash[id] = 0; 33 for ( int i = len[id]; i > 0; --i ) 34 reHash[id] = reHash[id] * 26 + str[id][i] - 'a'; 35 36 return; 37 } 38 39 int main() 40 { 41 int T, cas = 0; 42 init(); 43 scanf( "%d", &T ); 44 while ( T-- ) 45 { 46 scanf( "%d", &N ); 47 for ( int i = 0; i < N; ++i ) 48 { 49 scanf("%s", str[i] + 1 ); 50 chuli( i ); 51 } 52 53 int ans = 0; 54 for ( int i = 0; i < N; ++i ) 55 for ( int j = 0; j < N; ++j ) 56 { 57 if ( i == j ) continue; 58 if ( Hash[i] * fac[ len[j] ] + Hash[j] == reHash[j] * fac[ len[i] ] + reHash[i] ) 59 ++ans; 60 } 61 62 printf( "Case #%d: %d\n", ++cas, ans ); 63 } 64 return 0; 65 }
转载于:https://www.cnblogs.com/GBRgbr/p/3202203.html
LA 6047 Perfect Matching 字符串哈希相关推荐
- HDU - 3613 Best Reward(字符串哈希)
题目链接:点击查看 题目大意:给出一个字符串,每个字母都有一个贡献值,现在要将这个字符串拆成两个子串,如果子串是回文串的话,贡献就是其中每个字母的贡献和,现在问贡献最大为多少 题目分析:很简单的一道回 ...
- 四川第七届 C Censor (字符串哈希)
Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text pp. Her j ...
- ELFhash - 优秀的字符串哈希算法
原 ELFhash - 优秀的字符串哈希算法 分类:算法杂论算法精讲数据结构 (1424) (2) 1.字符串哈希: 我们先从字符串哈希说起 在很多的情况下,我们有可能会获得大量的字符串,每个字符串 ...
- 【CodeForces】961 F. k-substrings 字符串哈希+二分
[题目]F. k-substrings [题意]给定长度为n的串S,对于S的每个k-子串$s_ks_{k+1}...s_{n-k+1},k\in[1,\left \lceil \frac{n}{2} ...
- 138. 兔子与兔子【字符串哈希】
很基础的字符串哈希 #include<bits/stdc++.h> using namespace std; typedef unsigned long long int ull; con ...
- Singing Superstar 字符串哈希-map操作
题意 : 给一长度 < 1e5 的字符串s,q < 1e5次询问,每次问一个长 < 30 的串 t 在s中出现的次数,且t不可重叠. 例 : "abababa"中 ...
- 中石油训练赛 - DNA(字符串哈希)
题目链接:点击查看 题目大意:给出一串只由A,C,G,T组成的字符串,再给出一个数字k,问每个长度为k的连续子串,出现的次数最多是多少次 题目分析:O(n)哈希一下,O(n)更新一下用无序map维护的 ...
- 怎么把字符串变成数组_字符串哈希:从零开始的十分钟包会教程
大家吼啊!这是我下定决心写专栏以来的第二篇文章,请大家多多资瓷!!同样我们先以上次的话起头吧! 恭喜你找到了这篇博客!虽然这个标题看起来非常像是nc营销号的标题但是!请相信我一次这是真的!如果不行请随 ...
- [Leetcode][程序员面试金典][面试题17.13][JAVA][恢复空格][动态规划][Trie][字符串哈希]
[问题描述][中等] [解答思路] 1. 动态规划 动态规划流程 第 1 步:设计状态 dp[i] 表示字符串的前 i 个字符的最少未匹配数. 第 2 步:状态转移方程 假设当前我们已经考虑完了前 i ...
最新文章
- python面相对象编程指南_Python面向对象编程指南
- AI可以在游戏里称霸,但是解决现实问题太难了
- LeetCode 49字母异位词分组50pow(x,n)51八皇后
- python3高阶函数:map(),reduce(),filter()的区别
- Sql Server 优化 SQL 查询:如何写出高性能SQL语句
- python123测验2答案八边形_Python试卷
- c语言 void**类型转换,void *和其他指针的转化
- Spring都用到了那些设计模式(3)
- 我为什么要放弃RESTful,选择拥抱GraphQL?
- 三星 9810 android 9,【极光ROM】-【三星NOTE9 N960X-9810】-【V17.0 Android-Q-TB9】
- 北京邮电计算机课程表,北邮通信工程本科专业课程表
- 怎么用软件测试相似相似度,文档相似性检测工具
- 显示网站统计量和访客地图
- HTTP 错误 404.3 – Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
- 真实力好口碑!Fortinet又双叒叕获评Gartner“客户之选”荣誉称号
- 视觉问答学习(一)——视觉问答的动态记忆网络DMN+(tensorflow实现)
- python是不是很简单_Python老师说Python是编程里最简单的还是两眼一抹黑咋办?
- 第二本第七章 Linux无人值守安装脚本kickstart
- 还不懂K8S各核心架构组件?来白嫖啊~
- 运行idea报错: Module was compiled with an incompatible version of Kotlin. The binary version of its meta
热门文章
- 论文盘点:CVPR 2018 Top 20,华人发明的SENet居首!
- ECCV 2020 | 图匠数据、华中师范提出低质退化文本识别算法PlugNet
- python flask高级编程之restful_flask-restful使用总结
- 收藏 | 从SGD到NadaMax,深度学习十种优化算法原理及实现
- HALCON学习之旅(三)
- 关于深度学习框架Hamaa与Python API文档生成工具Sophon
- 云计算odps使用笔记(一)环境搭建
- 安装unzip_史上最详细的WordPress安装教程(六):安装WordPress
- 前端项目引入js文件写绝对目录还是相对目录_flask入门(三)静态文件
- java压栈重复字符串_Java 实例 – 压栈出栈的方法实现字符串反转