P3370 【模板】字符串哈希

JihuiPeng 2018-05-06 原文

P3370 【模板】字符串哈希

题目描述

如题,给定N个字符串(第i个字符串长度为Mi,字符串内包含数字、大小写字母,大小写敏感),请求出N个字符串中共有多少个不同的字符串。

输入输出格式

输入格式:

 

第一行包含一个整数N,为字符串的个数。

接下来N行每行包含一个字符串,为所提供的字符串。

 

输出格式:

 

输出包含一行,包含一个整数,为不同的字符串个数。

 

输入输出样例

输入样例#1: 

5
abc
aaaa
abc
abcc
12345
输出样例#1: 

4

说明

时空限制:1000ms,128M

数据规模:

对于30%的数据:N<=10,Mi≈6,Mmax<=15;

对于70%的数据:N<=1000,Mi≈100,Mmax<=150

对于100%的数据:N<=10000,Mi≈1000,Mmax<=1500

样例说明:

样例中第一个字符串(abc)和第三个字符串(abc)是一样的,所以所提供字符串的集合为{aaaa,abc,abcc,12345},故共计4个不同的字符串。

 

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 typedef unsigned long long ull;
 7 const int N=1e5+10,M=23333;
 8 int hs[N];
 9 ull hAsh(string a){
10     ull key=0;
11     int len=a.length();
12     for(int i=0;i<len;i++){
13         key=key*M+a[i];
14     }
15     return key;
16 }
17 int main (){
18     int n;
19     string a;
20     cin>>n;
21     for(int i=0;i<n;i++){
22         cin>>a;
23         hs[i]=hAsh(a);
24     }
25     sort(hs,hs+n);
26     int ans=1;
27     for(int i=1;i<n;i++){
28         if(hs[i]!=hs[i-1])ans++;
29     }
30     cout<<ans<<endl;
31 }

 

发表于 2018-05-06 16:41 pjhui 阅读() 评论() 编辑 收藏

 

版权声明:本文为JihuiPeng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/JihuiPeng/p/8998675.html

P3370 【模板】字符串哈希的更多相关文章

  1. Python 之 基础知识(三)

      一、函数 def 函数名(): 函数封装的代码 ... def是英文define缩写 别的Python文件 […]...

  2. [题解] Luogu P5446 [THUPC2018]绿绿和串串

    [题解] Luogu P5446 [THUPC2018]绿绿和串串 ·题目大意 定义一个翻转操作\(f(S_n […]...

  3. JDK源码分析(6)之 LinkedHashMap 相关

    LinkedHashMap实质是HashMap+LinkedList,提供了顺序访问的功能;所以在看这篇博客之 […]...

  4. redis系列:通过demo学习hash命令

    redis系列:通过demo学习hash命令 前言 这一篇文章将讲述Redis中的hash类型命令,同样也是通 […]...

  5. 51nod——2504 是子序列的个数(一看就会的序列自动机原理)

      还以为序列自动机是什么,写完无意间看到题解原来这就是序列自动机……这算自己发现算法...

  6. jQuery windows.location.hash作用

    window.location.hash 中的 hash 属性是一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分)。 # :代表网页中的一个位置。其页面的字符,就是该位置的标识符 我们知道很多时候做一些问卷调查的时...

  7. 面试官问我:如何在 Python 中解析和修改 XML

    摘要:我们经常需要解析用不同语言编写的数据。Python提供了许多库来解析或拆分用其他语言编写的数据。在此 P […]...

  8. 51单片机串口通信的发送与接收 字符串

    谢谢:http://blog.csdn.net/gszhy/article/details/8594433 5 […]...

随机推荐

  1. Python小白的数学建模课-03.线性规划

    线性规划是很多数模培训讲的第一个算法,算法很简单,思想很深刻。 要通过线性规划问题,理解如何学习数学建模、如何 […]...

  2. Flink中的CEP复杂事件处理 (源码分析)

    Flink中的CEP复杂事件处理 (源码分析) Posted on 2019-12-04 11:45  末日布 […]...

  3. 性能超四倍的高性能.NET二进制序列化库

    二进制序列化在.NET中有很多使用场景,如我们使用分布式缓存时,通常将缓存对象序列化为二进制数据进行缓存,在A […]...

  4. java 实现JSON数据格式化 – 拿着菜刀

    java 实现JSON数据格式化 关键在于好的算法这个代码来源于网络,算法已在注释中添加。   工具地址: 链 […]...

  5. 翻译:《实用的Python编程》03_02_More_functions

    目录 | 上一节 (3.1 脚本) | 下一节 (3.3 错误检查) 3.2 深入函数 尽管函数在早先时候介绍 […]...

  6. 关于如何查看MySQL版本:

      方法一: 进入mysql cmd,   status;   将显示当前mysql的version的各种信息 […]...

  7. APP开发——客户端,忘记密码,修改密码,注册的完整实现,个人中心的基本显示

    2021-08-21 解决了重复注册的问题 任务: 1.忘记密码和修改密码的界面和代码,获取验证码 2.个人中 […]...

  8. HA:HADOOP高可用机制

    课程大纲(HADOOP高可用机制) HA运作机制 什么是HA HADOOP如何实现HA HDFS-HA详解 H […]...

展开目录

目录导航