洛谷P3370 【模板】字符串哈希(c嘎嘎)

鼠扑  金牌会员 | 2024-12-23 00:48:11 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 868|帖子 868|积分 2604

题目链接P3370 【模板】字符串哈希 - 洛谷 | 计算机科学教诲新生态
题目难度:普及



解题思路:利用哈希算法,将每一个字符串映射到一个值域较小、可以方便比较的数,然后将哈希值存入到set(不能有重复元素),最后输出set的大小。

代码部分:
  1. #include<bits/stdc++.h>//万能头文件
  2. using namespace std;
  3. typedef unsigned long long ULL;
  4. const int N = 100010,P = 131;
  5. int n;
  6. ULL h[N];
  7. char s[N];
  8. set<ULL>st;
  9. int get_hash(char s[])//哈希函数
  10. {
  11.         h[0] = 0;
  12.         int len = strlen(s);
  13.         for(int i=0; i<len; i++)
  14.         {
  15.                 h[i + 1] = h[i] * P + s[i];
  16.         }
  17.         return h[len];
  18. }
  19. int main()
  20. {
  21.     ios::sync_with_stdio(0);
  22.     cin.tie(0), cout.tie(0);
  23.    
  24.     cin >> n;
  25.    
  26.         while(n--)//读入
  27.         {
  28.                 cin >> s;
  29.                 st.insert(get_hash(s));//插入set中
  30.         }
  31.     cout<<st.size();
  32.              
  33.     return 0;  
  34. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表