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; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥