字符串哈希
include
include
include
using namespace std;
const int N = 10010;
int n, m;
char s[N];
typedef unsigned long long ULL;
const int P = 131;
ULL h[N], ans[N];
// 计算串的哈希值
ULL calc(char s, int n){
h[0] = 0;
for(int i = 1; i <= n; i ++){
h[i] = h[i-1]P+s[i];
}
return h[n];
}
int main(){
cin >> n;
for(int i=1; i<=n; i++){
scanf("%s", s + 1);
int m = strlen(s+1);
ans[i] = calc(s, m);
}
sort(ans+1, ans+n+1);
int cnt = 0;
for(int i=1; i<=n; i++)
if(ans[i]!=ans[i-1]) ++cnt;
printf("%d", cnt);
return 0;
}//一般而言哈希值选择131或者13331,出现哈希碰撞的概率很小
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】