一开始我用的Trie+计数,但是不是计多了就是计少了,后来暴力暴过去的……

看了别人的代码知道是字符串哈希,但是仍有几个地方不理解:

1.26^500溢出问题

2.没考虑哈希碰撞?

跪求指点!

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cstdlib>
 4
 5 #define LL unsigned long long int
 6
 7 const int MAXN = 1010;
 8 const int MAXLEN = 510;
 9
10 int N;
11 char str[MAXN][MAXLEN];
12 int len[MAXN];
13 LL Hash[MAXN];      //原串哈希值
14 LL reHash[MAXN];    //逆转串哈希值
15 LL fac[MAXLEN];
16
17 void init()
18 {
19     fac[0] = 1;
20     for ( int i = 1; i < MAXLEN; ++i )
21         fac[i] = fac[i - 1] * 26;
22     return;
23 }
24
25 void chuli( int id )
26 {
27     len[id] = strlen( str[id] + 1 );
28     Hash[id] = 0;
29     for ( int i = 1; i <= len[id]; ++i )
30         Hash[id] = Hash[id] * 26 + str[id][i] - 'a';
31
32     reHash[id] = 0;
33     for ( int i = len[id]; i > 0; --i )
34         reHash[id] = reHash[id] * 26 + str[id][i] - 'a';
35
36     return;
37 }
38
39 int main()
40 {
41     int T, cas = 0;
42     init();
43     scanf( "%d", &T );
44     while ( T-- )
45     {
46         scanf( "%d", &N );
47         for ( int i = 0; i < N; ++i )
48         {
49             scanf("%s", str[i] + 1 );
50             chuli( i );
51         }
52
53         int ans = 0;
54         for ( int i = 0; i < N; ++i )
55             for ( int j = 0; j < N; ++j )
56             {
57                 if ( i == j ) continue;
58                 if ( Hash[i] * fac[ len[j] ] + Hash[j] == reHash[j] * fac[ len[i] ] + reHash[i] )
59                     ++ans;
60             }
61
62         printf( "Case #%d: %d\n", ++cas, ans );
63     }
64     return 0;
65 }

转载于:https://www.cnblogs.com/GBRgbr/p/3202203.html

LA 6047 Perfect Matching 字符串哈希相关推荐

  1. HDU - 3613 Best Reward(字符串哈希)

    题目链接:点击查看 题目大意:给出一个字符串,每个字母都有一个贡献值,现在要将这个字符串拆成两个子串,如果子串是回文串的话,贡献就是其中每个字母的贡献和,现在问贡献最大为多少 题目分析:很简单的一道回 ...

  2. 四川第七届 C Censor (字符串哈希)

    Censor frog is now a editor to censor so-called sensitive words (敏感词). She has a long text pp. Her j ...

  3. ELFhash - 优秀的字符串哈希算法

    原 ELFhash - 优秀的字符串哈希算法 分类:算法杂论算法精讲数据结构 (1424)  (2) 1.字符串哈希: 我们先从字符串哈希说起 在很多的情况下,我们有可能会获得大量的字符串,每个字符串 ...

  4. 【CodeForces】961 F. k-substrings 字符串哈希+二分

    [题目]F. k-substrings [题意]给定长度为n的串S,对于S的每个k-子串$s_ks_{k+1}...s_{n-k+1},k\in[1,\left \lceil \frac{n}{2} ...

  5. 138. 兔子与兔子【字符串哈希】

    很基础的字符串哈希 #include<bits/stdc++.h> using namespace std; typedef unsigned long long int ull; con ...

  6. Singing Superstar 字符串哈希-map操作

    题意 : 给一长度 < 1e5 的字符串s,q < 1e5次询问,每次问一个长 < 30 的串 t 在s中出现的次数,且t不可重叠. 例 : "abababa"中 ...

  7. 中石油训练赛 - DNA(字符串哈希)

    题目链接:点击查看 题目大意:给出一串只由A,C,G,T组成的字符串,再给出一个数字k,问每个长度为k的连续子串,出现的次数最多是多少次 题目分析:O(n)哈希一下,O(n)更新一下用无序map维护的 ...

  8. 怎么把字符串变成数组_字符串哈希:从零开始的十分钟包会教程

    大家吼啊!这是我下定决心写专栏以来的第二篇文章,请大家多多资瓷!!同样我们先以上次的话起头吧! 恭喜你找到了这篇博客!虽然这个标题看起来非常像是nc营销号的标题但是!请相信我一次这是真的!如果不行请随 ...

  9. [Leetcode][程序员面试金典][面试题17.13][JAVA][恢复空格][动态规划][Trie][字符串哈希]

    [问题描述][中等] [解答思路] 1. 动态规划 动态规划流程 第 1 步:设计状态 dp[i] 表示字符串的前 i 个字符的最少未匹配数. 第 2 步:状态转移方程 假设当前我们已经考虑完了前 i ...

最新文章

  1. python面相对象编程指南_Python面向对象编程指南
  2. AI可以在游戏里称霸,但是解决现实问题太难了
  3. LeetCode 49字母异位词分组50pow(x,n)51八皇后
  4. python3高阶函数:map(),reduce(),filter()的区别
  5. Sql Server 优化 SQL 查询:如何写出高性能SQL语句
  6. python123测验2答案八边形_Python试卷
  7. c语言 void**类型转换,void *和其他指针的转化
  8. Spring都用到了那些设计模式(3)
  9. 我为什么要放弃RESTful,选择拥抱GraphQL?
  10. 三星 9810 android 9,【极光ROM】-【三星NOTE9 N960X-9810】-【V17.0 Android-Q-TB9】
  11. 北京邮电计算机课程表,北邮通信工程本科专业课程表
  12. 怎么用软件测试相似相似度,文档相似性检测工具
  13. 显示网站统计量和访客地图
  14. HTTP 错误 404.3 – Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
  15. 真实力好口碑!Fortinet又双叒叕获评Gartner“客户之选”荣誉称号
  16. 视觉问答学习(一)——视觉问答的动态记忆网络DMN+(tensorflow实现)
  17. python是不是很简单_Python老师说Python是编程里最简单的还是两眼一抹黑咋办?
  18. 第二本第七章 Linux无人值守安装脚本kickstart
  19. 还不懂K8S各核心架构组件?来白嫖啊~
  20. 运行idea报错: Module was compiled with an incompatible version of Kotlin. The binary version of its meta

热门文章

  1. 论文盘点:CVPR 2018 Top 20,华人发明的SENet居首!
  2. ECCV 2020 | 图匠数据、华中师范提出低质退化文本识别算法PlugNet
  3. python flask高级编程之restful_flask-restful使用总结
  4. 收藏 | 从SGD到NadaMax,深度学习十种优化算法原理及实现
  5. HALCON学习之旅(三)
  6. 关于深度学习框架Hamaa与Python API文档生成工具Sophon
  7. 云计算odps使用笔记(一)环境搭建
  8. 安装unzip_史上最详细的WordPress安装教程(六):安装WordPress
  9. 前端项目引入js文件写绝对目录还是相对目录_flask入门(三)静态文件
  10. java压栈重复字符串_Java 实例 – 压栈出栈的方法实现字符串反转