字符串Hash相关
其实也并不是什么特别难的算法,但是我个人实在是不太喜欢字符串之类的东西(字符串神马的真的是麻烦),于是一直拖着不想看,然后模板题之类的也懒得做。
Hash的思想其实也没什么复杂的,就是给定一系列字符串以后,根据字符串的特点(长度、只有数字、只有小写字母、只有大写字母等等)选择一个适当的值,将所有的字符串转化为数值存储在数组里。当然还要注意解决冲突,在数据特别大的情况下,很难保证不会出现不同字符串Hash值相同的情况。解决冲突的方法也有很多,这里我就不多说了,我自己也并不是对所有方法都熟悉,自己去看看别的大犇的博客吧(其实是我懒_(:з」∠)_)
关于Hash,我理解的也并没有多深,更加专业,更加深入,更加NB,更加有B格的解释还是去看看大犇们的解释吧。
这里我再放下洛谷的模板题的代码,题目传送门
#include<bits/stdc++.h>
#define mod 1000007
using namespace std; typedef unsigned long long ull;
const int N=1e4+;
int n,vis[],ans;
ull hash,id[N][];
char s[]; inline bool check(int x,int y)
{
if( id[x][]!=id[y][] ) return false;
for(int i=; i<id[x][]; ++i)
if( id[x][i]!=id[y][i] ) return false;
return true;
} int main()
{
scanf("%d",&n);
for(int i=; i<=n; ++i) {
scanf("%s",s);
id[i][]=strlen(s);
hash=;
for(int j=; j<id[i][]; ++j) {
hash=(hash*s[j]*)%mod;
id[i][j+]=hash;
}
while( vis[hash] ) {
if( check(vis[hash],i) ) break;
hash++;
}
if( !vis[hash] ) {
vis[hash]=i; ans++;
}
}
return printf("%d\n",ans),;
}
字符串Hash相关的更多相关文章
- [知识点]字符串Hash
1.前言 字符串的几大主要算法都多少提及过,现在来讲讲一个称不上什么算法, 但是非常常用的东西——字符串Hash. 2.Hash的概念 Hash更详细的概念不多说了,它的作用在于能够对复杂的状态进行简 ...
- 【BZOJ-3555】企鹅QQ 字符串Hash
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 1545 Solved: 593[Submit][Statu ...
- POJ 1200 字符串HASH
题目链接:http://poj.org/problem?id=1200 题意:给定一个字符串,字符串只有NC个不同的字符,问这个字符串所有长度为N的子串有多少个不相同. 思路:字符串HASH,因为只有 ...
- LA4671 K-neighbor substrings(FFT + 字符串Hash)
题目 Source http://acm.hust.edu.cn/vjudge/problem/19225 Description The Hamming distance between two s ...
- 各种字符串Hash函数比较(转)
常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法.这些函数使用位运算使得每一个字符都对最后的函数值产生影响.另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎 ...
- 字符串hash + 二分答案 - 求最长公共子串 --- poj 2774
Long Long Message Problem's Link:http://poj.org/problem?id=2774 Mean: 求两个字符串的最长公共子串的长度. analyse: 前面在 ...
- 字符串hash - POJ 3461 Oulipo
Oulipo Problem's Link ---------------------------------------------------------------------------- M ...
- 长度有限制的字符串hash函数
长度有限制的字符串hash函数 DJBHash是一种非常流行的算法,俗称"Times33"算法.Times33的算法很简单,就是不断的乘33,原型如下 hash(i) = hash ...
- hdu 4622 Reincarnation 字符串hash 模板题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4622 题意:给定一个长度不超过2000的字符串,之后有不超过1e5次的区间查询,输出每次查询区间中不同 ...
随机推荐
- RabbitMQ的使用总结
RabbitMQ介绍 说明: Consumer (消费者):使用队列 Queue 从 Exchange 中获取消息的应用. Exchange (交换机):负责接收生产者的消息并把它转到到合适的队列. ...
- 洛谷 3029 [USACO11NOV]牛的阵容Cow Lineup
https://www.luogu.org/problem/show?pid=3029 题目描述 Farmer John has hired a professional photographer t ...
- IIS 搭建
1. 在打开程序功能里面,点击IIS安装.注意要选择适当的各种有用的服务.例如默认文档就需要安装非IIS下面的选项. 2. IIS部署网站可以参考网上的步骤.会遇到500处理程序“Extensionl ...
- MySQL 5.7 跟踪优化器
Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 5Server version ...
- No cached version of ..... available for offline mode.
I had same error...Please Uncheck the offline work in Settings. File => Settings => Build, Exe ...
- UOJ#31 【UR #2】猪猪侠再战括号序列
传送门http://uoj.ac/problem/31 大家好我是来自百度贴吧的_叫我猪猪侠,英文名叫_CallMeGGBond. 我不曾上过大学,但这不影响我对离散数学.复杂性分析等领域的兴趣:尤其 ...
- 【CODEVS】3546 矩阵链乘法
[算法]区间DP [题解] 注意先输出右括号后输出左括号. f[i][i+x-1]=min(f[i][i+x-1],f[i][j]+f[j+1][i+x-1]+p[i]*p[j+1]*p[i+x]) ...
- 【BZOJ】1096 [ZJOI2007]仓库建设
[算法]DP+斜率优化 [题解]状态转移方程:f[i]=min(f[j]+g(i+1,j-1))+c[i] 关键在于如何O(1)计算g(i+1,j-1). 推导过程:http://blog.csdn. ...
- 获取天气api
http://wthrcdn.etouch.cn/WeatherApi?citykey=101010100通过城市id获得天气数据,xml文件数据,当错误时会有<error>节点http: ...
- sunos kernel src
https://github.com/eocallaghan/AuroraUX-SunOS https://github.com/zoyanhui/coroutine-libtask https:// ...