POJ 1200 Crazy Search(哈希)
来源:互联网 发布:js闭包的理解 编辑:程序博客网 时间:2024/06/08 08:30
题目链接:点击打开链接
哈希函数即一个N位的NC进制数
AC代码如下:
#include <iostream>#include <string>#include <cstdio>#include <algorithm>#include <set>#include <cstring>using namespace std;int N, NC, pos;int hash_c[260];bool re[16000005];string ss;void hashCaculate(){ pos=0; memset(hash_c,-1,sizeof(hash_c)); for(int i=0;i<ss.length();++i) { if(hash_c[(int)ss[i]]==-1) hash_c[(int)ss[i]]=pos++; //cout<<hash_c[(int)ss[i]]<<endl; }}unsigned long long power(unsigned long long a, unsigned long long n){ if(n==0) return 1; if(n==1) return a; unsigned long long temp = power(a,n/2); if(n%2) return temp*temp*a; else return temp*temp;}void solve(){ memset(re,0,sizeof(re)); unsigned long long cnt=0; for(int i=0;i<=ss.length()-N&&i+N<=ss.length();++i) { unsigned long long key = 0; //cout<<hash_c[(int)ss[i]]<<endl; for(int j=0;j<N;++j) { key+=hash_c[(int)ss[j+i]]*power(NC,j); } if(!re[key]) re[key]=true, cnt++; } cout<<cnt<<endl;}int main(){ ios::sync_with_stdio(0); cin.tie(0); while(cin>>N>>NC) { cin>>ss; hashCaculate(); solve(); ss.clear(); } return 0;}
阅读全文
0 0
- POJ 1200 Crazy Search(哈希)
- poj 1200 Crazy Search 哈希
- Crazy Search - POJ 1200 哈希
- POJ 1200 Crazy Search
- poj 1200 Crazy Search
- POJ 1200 Crazy Search
- poj 1200 Crazy Search
- POJ 1200 Crazy Search
- poj 1200 Crazy Search
- POJ 1200 Crazy Search
- poj 1200 Crazy Search
- poj-1200 Crazy Search
- POJ 1200 Crazy Search
- poj 1200 Crazy Search
- POJ 1200 Crazy Search
- poj-1200 Crazy Search
- POJ 1200 Crazy Search
- poj 1200 Crazy Search
- systat(统计分析软件) v13.1免费版下载及安装教程
- Java开发环境搭建(进阶配置三 ——MySQL)
- String和StringBuilder作为方法参数的区别
- Unity3D 打包后UI失效(FindGameObjectsWithTag)
- 菜鸡学习之插入排序------学习算法记录1
- POJ 1200 Crazy Search(哈希)
- 抽象类与接口
- adoop Error: java.io.IOException: Unable to initialize any output collector
- 你应该知道的RPC原理
- Hadoop中的zookeeper
- 关于 u3d 接入支付宝的补充
- 常见的流程控制语句
- 出现和隐藏
- 07:有趣的跳跃