POJ1200 Crazy Search
POJ1200 Crazy Search
本题题目没给数据范围!!!但是它给了输出结果不大于1.6* 107
所以本题就可以用字符串hash,只需要mod1.6*107就可以了
由于最多只有nc种字符,我们直接用nc进制字符串hash就行了
对于字符串hash,我们从直观上讲是每次都要hash=hash+pow(x,p)的
但是在实现的过程中我们可以hash=hash*p+x;
这样少掉一个pow(pow还需要注意pow(int,double));
Tip:一定要先求一个num数组,把每一个字母的hash值都映射到从1开始!不然会爆
代码:
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <cstring>
using namespace std;
int n,nc,sum;
char s[16000111];
int hash[16000111],num[500];
int ans,tot;
int main()
{scanf("%d%d",&n,&nc);scanf("%s",&s);int len=strlen(s);for (int i=1;i<=len;i++){if (num[s[i]]==0) num[s[i]]=++tot;}for (int i=0;i<=len-n;i++){sum=0;for (int j=0;j<n;j++){sum=sum*nc+num[s[i+j]];sum=sum%16000000;}if (!hash[sum]) ans++;hash[sum]=1;}printf("%d",ans);return 0;
}
POJ1200 Crazy Search相关推荐
- poj1200 Crazy Search(hash)
题目大意就是将一个字符串分成长度为N的字串.且不同的字符不会超过NC个.问总共有多少个不同的子串. 采用的办法就是以nc作为进制,把一个子串化为这个进制下的数,再用哈希判断.由于题目说长度不会超过16 ...
- poj 1200 Crazy Search
http://poj.org/problem?id=1200 字符串搜索,要将字符串之前搜索过的字符串用一个数来映射储存.这里的字符串长达16*10^6,所以不能hash储存,就连下标都不能存下来,所 ...
- 【POJ 1200】Crazy Search(将字符映射为数字,将NC进制hash成10进制)
题目链接 题目链接 http://poj.org/problem?id=1200 题意 原字符串有NC个不同字母,统计原字符串长度为N的子字符串个数 解题思路 将字符按ASCII码映射成数字. 将n个 ...
- POJ 1200 Crazy Search(RK)
题意 给定一个由NC个字母组成的字符串,求长度为N的不同子串的个数 思路: 由于只有NC个字母,可以将字母编号,0 - NC - 1,转换成数字,就可以将字符串表示成NC进制的数字,这样所有字串代表的 ...
- POJ 1200 Crazy Search 查找有多少种不同的子串(hash)
文章目录 1.采用map解题 2.采用hash查找 题目链接: http://poj.org/problem?id=1200 题目大意:给定子串长度,字符中不同字符数量,以及一个字符串,求不同的子串数 ...
- POJ_1200 Crazy Search ( Hash映射 )
题目连接 题意 给一个含有nc个不同字母的字符串,然后求其中有多少个长度为n的不同子串. 题解 因为题目中给出了nc,即字母种类的个数.所以可以把每一个出现的字母对应为1到nc.然后把长度为n的字符串 ...
- Linux里怎么进行路由跟踪,[Linux] traceroute 路由跟踪指令用例
traceroute是用来跟踪数据包到达网络主机所经过的路由工具.在Linux系统中,称之为traceroute,在Windows中称为tracert. 一条路径上的每个设备traceroute要测3 ...
- TYUT-A专题题解(一)
TYUT-A专题题解(一) 01A Ad Hoc UVA353 LA5247 Pesky Palindromes[回文] - 海岛Blog - CSDN博客 UVA947 Master Mind He ...
- 杭电OJ分类题目(1)
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...
- 本周题解(9.12)
例题 POJ 1200 Crazy Search 解题思路: 将N个字符串分别转换成数字 然后按照 NC进制转换为 10进制 然后开一个标记数组进行标记(判定唯一性) 这样大大缩短了 时间 1600万 ...
最新文章
- Lind.DDD.DynamicModules动态模块化的设计
- 基于51单片机的高频频率计的设计
- mysql命令导入导出数据_mysql命令行导入和导出数据
- mac book file management system
- 做正确的事,正确的做事
- pdo插入mysql数据出错_php中通过pdo插入数据时,sql语句错误?
- 树莓派Python编程指南--第一章(起航--启动和运行)
- 在mysql表中如何变换列和行_在SQL中转换列和行的简单方法?
- Nginx 状态监控、缓存的两种机制(学习笔记十四)
- eclipse让实现类也添加上接口的注释_您的Spring框架注释指南,请注意查收
- 模拟数据集上训练神经网络,网络解决二分类问题练习
- python rs232_Python监视串口(RS-232)握手信号
- 吴恩达《神经网络与深度学习》课程笔记(1)-- 深度学习概述
- linux版锐捷认证客户端,Linux/UNIX锐捷802.1x网络的认证客户端:RuijieClient 0.7发布
- 前装车载导航搭载率突破50%,谁在领跑背后的导航引擎
- MacBook使用U盘重装系统
- MATLAB黄金分割法标注最优点,matlab黄金分割法课程论文--.doc
- python多个箱线图_python-matplotlib | 箱线图及解读
- 俄版“支付宝”来了 俄互联网巨头Yandex推出全新支付服务
- C语言实现扫雷——详解
热门文章
- 【LOJ6225】【网络流24题】火星探险问题
- 【网络流24题-23】洛谷P3356 火星探险问题
- 软件工程领域国际会议列表
- ni visa pci_VISA/MASTER信用卡在线缴费友邦、保诚步骤!
- sqlplus命令连接oracle数据库,sqlplus命令行登录oracle数据库的N种方法盘点
- 互联网监控直播-LiveGBS分发出RTMP、HLS、FLV、RTSP视频流说明介绍
- 2018优秀讲师排行榜出炉,将受邀出席开发者大会!
- springtboot 操作es
- 向MySQL数据库中插入数据,sql语句没问题,但插入失败也不报错的原因
- OSChina 周五乱弹 —— 程序猿真是令人感到担忧!