P3370 【模板】字符串哈希题解

P3370 【模板】字符串哈希

题目描述

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

友情提醒:如果真的想好好练习哈希的话,请自觉。

输入格式

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

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

输出格式

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

输入输出样例 #1

输入 #1

5
abc
aaaa
abc
abcc
12345

输出 #1

4

说明/提示

数据范围

对于 30 % 30\% 30% 的数据: N ≤ 10 N\leq 10 N10 M i ≈ 6 M_i≈6 Mi6 M max ⁡ ≤ 15 M_{\max}\leq 15 Mmax15

对于 70 % 70\% 70% 的数据: N ≤ 1000 N\leq 1000 N1000 M i ≈ 100 M_i≈100 Mi100 M max ⁡ ≤ 150 M_{\max}\leq 150 Mmax150

对于 100 % 100\% 100% 的数据: N ≤ 10000 N\leq 10000 N10000 M i ≈ 1000 M_i≈1000 Mi1000 M max ⁡ ≤ 1500 M_{\max}\leq 1500 Mmax1500

样例说明

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

拓展阅读

以下的一些试题从不同层面体现出了字符串哈希算法的正确性分析。

思路

直接使用map即可。

代码见下

#include<bits/stdc++.h> 
using namespace std;
long long n,db=0;
string s;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
//string s2;
map<string,bool> mp;
int main(){
	cin>>n;
    for(int i=1;i<=n;i++){
        cin>>s;
        if(mp[s]==0){
            db++;
            mp[s]=1;
        }
    }
    cout<<db<<endl;
	return 0;
}
posted @ 2025-10-29 21:15  bz02_2023f2  阅读(4)  评论(0)    收藏  举报  来源