
字符串哈希
文章平均质量分 59
IcePrincess_1968
这个作者很懒,什么都没留下…
展开
-
Codeforces #985F: Isomorphic Strings 题解
感觉虽然是edu round的倒数第二题但还蛮简单的 我们分析那个同构的定义,可以理解为“该一样的字符要一样,该不一样的字符要不一样”,那么对于每一种字符我们想一种办法来表示他在子串中所有的出现位置(像一张有黑点的纸条),然后看看两个串能不能配对就好 把一个01串转换成一个数,我刚开始想的是高精度用2n2n2^n表示,然而复杂度是炸的,然后我发现自己蠢了,用字符串哈希就可以了 为了保险我写了...原创 2018-05-22 14:39:29 · 522 阅读 · 1 评论 -
ZOJ4010: Neighboring Characters 题解
首先可以O(n)O(n)O(n)的预处理出所有的不合法位置 然后我的第一想法是用我的长度去包含所有的不合法位置,可能会有若干种包含方法,然后发现只要满足一个什么什么样的字符串哈希值不同就行 但这样的考虑忽略了一个特性:我的覆盖是可以从尾巴出发,穿越到头再覆盖的,这个比较难处理 不妨换一个角度:我们预处理出了若干的不合法位置,把原串分割成了若干个合法的小串,我们最后剩下的合法字符串一定是某一个...原创 2018-04-03 21:09:03 · 267 阅读 · 0 评论 -
Codeforces #30E: Tricky and Clever Password 题解
首先可以发现一个结论我们枚举一个中间回文串的中心点,会发现我们一定会选择以它为中心的最长的回文串因为考虑左边右边的两个串,如果它们与长回文串不重叠,那么取长串显然更优;如果重叠,那么不重叠的部分仍然可以取,重叠的部分已经被我的长串取掉了,也不亏。所以取长串肯定最优对于每个长度的后缀,如果前面有多个子串和它匹配,那么显然越靠前越优我们先求对于每一个位置,能和后缀匹配的最长长度,记为p[i]我们枚举位...原创 2018-02-07 23:57:29 · 383 阅读 · 0 评论 -
Codeforces #835D: Palindromic characteristics 题解
首先,判断一个串是否回文可以用rolling hash搞定 然后有一个非常重要的结论 一个串如果最高palindrome等级是k,那么1~k-1它也一定满足(仔细想想就能发现这是对的) 所以我们开一个数组a[i][j]计算开头是i,长度为j的子串的最大palindrome level 还有一个条件:如果这个字符串有k-palindrome,那么这个字符串本身也一定是回文的,因为左右都回文,原创 2017-08-01 11:15:59 · 381 阅读 · 0 评论