poj 1200(字符串哈希)
来源:互联网 发布:时方英语复读机软件 编辑:程序博客网 时间:2024/06/16 09:18
一开始直接开了map,不知道要用字符串哈希。 果断TLE, 其实一共nc个字符,让每个字符对应一个0-nc的数字,则不同的长度为n的字串哈希值也不同,就是以nc为进制,不同的以数字0-nc的长度为n的数字组合唯一。
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<cmath>using namespace std;char s[27000000];int vis[300];int vi[27000000];int a[300];int main(){ int n,nc; scanf("%d%d",&n,&nc); //cout<<"ejjejje"<<endl; scanf("%s",s); int len=strlen(s); for(int i=0;i<len;i++) { vis[s[i]]=1; } int t=0; int sum=0; for(int i=0;i<300;i++) { if(vis[i]==1) a[i]=t++; } //cout<<"ejejje"<<endl; //cout<<"t:"<<t<<endl; int x; for(int i=0;i<=len-n;i++) { x=0; for(int j=i;j<i+n;j++) { x=x*nc+a[s[j]]; } if(vi[x]==0) { sum++; vi[x]=1; } } cout<<sum<<endl; return 0;}
- poj 1200(字符串哈希)
- POJ 1200 字符串哈希
- POJ 2503 - 字符串哈希
- poj 1200(字符串hash)
- [POJ 2774] Long Long Message (字符串哈希+二分)
- [POJ 1743] Musical Theme (字符串哈希+二分)
- [POJ 3974] Palindrome (字符串哈希+二分)
- poj 3096 Surprising Strings 字符串哈希
- Crazy Search+POJ+字符串哈希
- poj-2774 二分+字符串哈希+二分
- POJ 1200 Crazy Search (字符串hash)
- POJ 1200 字符串hash
- poj 1200字符串hash
- poj 1200 (字符串hash)
- POJ 1200字符串hash
- 【字符串RK匹配】POJ 1200
- POJ 1002(字符串处理)
- poj 2503(字符串hash)
- 成功在当下
- code::Blocks使用时的乱码问题
- 只有毅力和决心无往不利
- Python 正则式学习笔记
- 决策树算法
- poj 1200(字符串哈希)
- 80%的人想要,但不愿意
- 图算法 无圈图和关键路径分析
- C/C++中的side effect
- 不要让思考阻碍你行动的步伐
- HUNNU--湖师大--11410--Eligibility
- The Dole Queue UVA133
- CEF英语等级介绍
- 杂谈-最近状态