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相关推荐

  1. poj1200 Crazy Search(hash)

    题目大意就是将一个字符串分成长度为N的字串.且不同的字符不会超过NC个.问总共有多少个不同的子串. 采用的办法就是以nc作为进制,把一个子串化为这个进制下的数,再用哈希判断.由于题目说长度不会超过16 ...

  2. poj 1200 Crazy Search

    http://poj.org/problem?id=1200 字符串搜索,要将字符串之前搜索过的字符串用一个数来映射储存.这里的字符串长达16*10^6,所以不能hash储存,就连下标都不能存下来,所 ...

  3. 【POJ 1200】Crazy Search(将字符映射为数字,将NC进制hash成10进制)

    题目链接 题目链接 http://poj.org/problem?id=1200 题意 原字符串有NC个不同字母,统计原字符串长度为N的子字符串个数 解题思路 将字符按ASCII码映射成数字. 将n个 ...

  4. POJ 1200 Crazy Search(RK)

    题意 给定一个由NC个字母组成的字符串,求长度为N的不同子串的个数 思路: 由于只有NC个字母,可以将字母编号,0 - NC - 1,转换成数字,就可以将字符串表示成NC进制的数字,这样所有字串代表的 ...

  5. POJ 1200 Crazy Search 查找有多少种不同的子串(hash)

    文章目录 1.采用map解题 2.采用hash查找 题目链接: http://poj.org/problem?id=1200 题目大意:给定子串长度,字符中不同字符数量,以及一个字符串,求不同的子串数 ...

  6. POJ_1200 Crazy Search ( Hash映射 )

    题目连接 题意 给一个含有nc个不同字母的字符串,然后求其中有多少个长度为n的不同子串. 题解 因为题目中给出了nc,即字母种类的个数.所以可以把每一个出现的字母对应为1到nc.然后把长度为n的字符串 ...

  7. Linux里怎么进行路由跟踪,[Linux] traceroute 路由跟踪指令用例

    traceroute是用来跟踪数据包到达网络主机所经过的路由工具.在Linux系统中,称之为traceroute,在Windows中称为tracert. 一条路径上的每个设备traceroute要测3 ...

  8. TYUT-A专题题解(一)

    TYUT-A专题题解(一) 01A Ad Hoc UVA353 LA5247 Pesky Palindromes[回文] - 海岛Blog - CSDN博客 UVA947 Master Mind He ...

  9. 杭电OJ分类题目(1)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...

  10. 本周题解(9.12)

    例题 POJ 1200 Crazy Search 解题思路: 将N个字符串分别转换成数字 然后按照 NC进制转换为 10进制 然后开一个标记数组进行标记(判定唯一性) 这样大大缩短了 时间 1600万 ...

最新文章

  1. Lind.DDD.DynamicModules动态模块化的设计
  2. 基于51单片机的高频频率计的设计
  3. mysql命令导入导出数据_mysql命令行导入和导出数据
  4. mac book file management system
  5. 做正确的事,正确的做事
  6. pdo插入mysql数据出错_php中通过pdo插入数据时,sql语句错误?
  7. 树莓派Python编程指南--第一章(起航--启动和运行)
  8. 在mysql表中如何变换列和行_在SQL中转换列和行的简单方法?
  9. Nginx 状态监控、缓存的两种机制(学习笔记十四)
  10. eclipse让实现类也添加上接口的注释_您的Spring框架注释指南,请注意查收
  11. 模拟数据集上训练神经网络,网络解决二分类问题练习
  12. python rs232_Python监视串口(RS-232)握手信号
  13. 吴恩达《神经网络与深度学习》课程笔记(1)-- 深度学习概述
  14. linux版锐捷认证客户端,Linux/UNIX锐捷802.1x网络的认证客户端:RuijieClient 0.7发布
  15. 前装车载导航搭载率突破50%,谁在领跑背后的导航引擎
  16. MacBook使用U盘重装系统
  17. MATLAB黄金分割法标注最优点,matlab黄金分割法课程论文--.doc
  18. python多个箱线图_python-matplotlib | 箱线图及解读
  19. 俄版“支付宝”来了 俄互联网巨头Yandex推出全新支付服务
  20. C语言实现扫雷——详解

热门文章

  1. 【LOJ6225】【网络流24题】火星探险问题
  2. 【网络流24题-23】洛谷P3356 火星探险问题
  3. 软件工程领域国际会议列表
  4. ni visa pci_VISA/MASTER信用卡在线缴费友邦、保诚步骤!
  5. sqlplus命令连接oracle数据库,sqlplus命令行登录oracle数据库的N种方法盘点
  6. 互联网监控直播-LiveGBS分发出RTMP、HLS、FLV、RTSP视频流说明介绍
  7. 2018优秀讲师排行榜出炉,将受邀出席开发者大会!
  8. springtboot 操作es
  9. 向MySQL数据库中插入数据,sql语句没问题,但插入失败也不报错的原因
  10. OSChina 周五乱弹 —— 程序猿真是令人感到担忧!