2.2hash

算法理解

将一个字符串,转化成数字,这样可以省去一个一个字母比较的复杂度。

数位哈希

将一个字符串中的一个元素看成一位数,把整个字符串,看成是一个p进制数,由于可能这个字符串对应的数太大了,所以我们需要取模运算,但是有可能就会有两个不一样的字符串数值相等,就是哈希冲突
取模有两种方式,自然溢出,手输模数,自然溢出和常用模数容易被卡,所以我采用某人的生日作为模数(20081203)

T2:(卡了6个多小时,重构了3次)

非常讨厌的一道题,哈希+二分复杂度O(nlogn),枚举中间点或位置,依次向两边拓展,正反跑一遍哈希,用前缀和统计,考虑前缀和时加的哈希值并不是完全符合数位的,还需要自己推导数位,考虑进制的差。
注:要学会把程序拆分成各个函数,方便思考和调试,还有就是做前缀和时要注意下标不得从0开始,若是的话会出现UB,我的程序本地过不了,开了交上去开O2就过了

T3:(3h)

为什么要取两个不同的进制?答:玄学问题
嗯,二维哈希,二维前缀和+进制哈希,先来一个横向哈希再来一个纵向哈希

T4:

两个问题,一个是最多背多少个单词,直接用哈希判就行了,另一个是一个单词最短背的段,我问考虑双指针,先用一个l,r表示区间端点,再将合法区间的r++,l一直加到不能加了为止,统计答案,正解用的哈希表,我不知道哈希表怎么用甚至有没有用。

T5:

T3简化版,我将进制数换了几个,就过了也不知道为什么

T6:

写这一篇的题总是让人崩溃...
不说了,将2000000打少了一个0,害的我调了一个hour

T7:

先写了一个map,T了,手写的哈希表还是T了,然后我实在是有点崩,递了一份题解

T8:

写了一个哈希,wa了,递了之前写过的一份map

T9:

通过map转化为点的编号,再跑一遍floyd

T10:

此题的意思是将拆分的小区间看作是一个个字母,比较左右是否相同

posted @ 2024-09-18 17:01  daydreamer_zcxnb  阅读(4)  评论(0编辑  收藏  举报