P3370 【模板】字符串哈希

传送门

题目大意

求n个字符串不同的个数

题解

hash模板 1LL强制转换成long long

代码

复制代码
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<set> 
#include<cstring>
using namespace std;
//#define mod 1e9+7//不能这样宏定义 
const int mod=1e9+7;
#define D 131
#define M 2333+7
long long n,g[M],f[M];
string s;
set<long long>t;
void predeal(int x){
    //memset(f,0,sizeof(f));
    //memset(g,0,sizeof(g));
    f[0]=s[0];
    for(int i=1;i<=x;i++)
        f[i]=(1LL*f[i-1]*D+s[i-1])%mod;
    g[0]=1;
    for(int i=1;i<=x;i++)
        g[i]=1ll*g[i-1]*D%mod;
}
int Hash(int l,int r){
    long long a=f[r],b=1LL*f[l-1]*g[r-l+1]%mod;
    return (a-b+mod)%mod; 
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        cin>>s;
        long long len=s.length();
        predeal(len);
        long long k=Hash(1,len);
        t.insert(k);
    }
    printf("%lld\n",t.size());
    return 0;
}
复制代码

 

posted @   ANhour  阅读(227)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
点击右上角即可分享
微信分享提示