C++-POJ1200-Crazy Search[hash]
2024-10-08 09:21:49
由于已经给出字符只有NC种,故可以把子串视为一个NC进制的数,以此构造hash函数就可以了
#include <set>
#include <map>
#include <cmath>
#include <queue>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN=;
char s[MAXN];int hash[MAXN],num[];
int main(){
for(int N,NC;scanf("%d%d",&N,&NC)!=EOF;){
memset(hash,,sizeof(hash));
memset(num,,sizeof(num));
scanf("%s",s+);
int cnt=,ans=,len=strlen(s+);
for(int i=;i<=len&&cnt<=NC;i++)if(!num[s[i]])num[s[i]]=cnt++;
for(int i=;i<=len-N+;i++){
int hashi=;for(int j=i;j<=i+N-;j++)hashi=hashi*NC+num[s[j]];
hash[hashi]?:ans++,hash[hashi]=;
}
cout<<ans<<endl;
}
return ;
}
最新文章
- android布局居中
- [并查集] POJ 2236 Wireless Network
- 20145337《Java程序设计》第四周学习总结
- Spring day03笔记
- JavaScript-分支语句与函数
- HDU 4902 (线段树)
- From MSI to WiX, Part 4 - Features and Components by Alex Shevchuk
- Fixflow引擎解析(五)(内核) - 基于Token驱动的引擎内核运转原理
- Dublin Core
- OpenStack Block Storage安装配置use LVM
- Git客户端(Windows系统)的使用(Putty)(转)
- 使用charles抓取htpps的方法
- springboot 1.5.2 集成kafka 简单例子
- 201521123013 《Java程序设计》第14周学习总结
- 焦点轮播图(tab轮播)
- Java异常实战——OutOfMemoryError
- 20175236 JAVA MyCP(课下作业)
- java集合 线程安全
- IOS7如何获取设备唯一标识
- Spring Batch 体系结构
热门文章
- 限定输入框只能输入数字, TextBox的TextChanged事件调用
- 解决officeOnline文档预览服务器只能域名提交的限制Redirect
- 关于牛客网C语言结构体位域(bit-fields)的一道题
- nginx反向代理(1)
- MySql 小表驱动大表
- NSSM 将jar 安装成windows服务
- DFS-B - Dr. Evil Underscores
- Gauss消元模板
- [AtCoder Code Festival 2017 QualB C/At3574] 3 Steps - 二分图染色,结论
- [HNOI2013] 消毒 - 二分图匹配