随笔分类 -  字符串——hash

摘要:题面:洛谷 题解: 我们暴力维护当前所有队伍内的所有子串(长度k = 1 ~ 50)的出现次数。 把每个子串都用一个hash值来表示,每次改变队伍形态都用双向链表维护,并暴力更新出现次数。 现在考虑复杂度。 如果只有连接,没有断开,那么复杂度为不同的子串个数:50n(注意只要O(n)预处理前缀和后缀 阅读全文
posted @ 2018-12-04 22:26 ww3113306 阅读(174) 评论(0) 推荐(0)
摘要:题面:洛谷 题解: 做法。。。。非常暴力。 因为要求的编辑距离最多只有1,所以我们直接枚举对那个位置(字符)进行操作,进行什么样的操作,加入/修改/删除哪个字符,然后暴力枚举hash判断即可, 1 #include<bits/stdc++.h> 2 using namespace std; 3 #d 阅读全文
posted @ 2018-12-04 22:18 ww3113306 阅读(233) 评论(0) 推荐(0)
摘要:题面: 洛谷 题解: 首先我们需要知道一个性质,串s的最小循环节 = len - next[len].其中next[len]表示串s的一个最长长度使得s[1] ~ s[next[len]] == s[len - next[len] + 1] ~ s[len](详细定义参见KMP) 至于为什么是成立的 阅读全文
posted @ 2018-12-04 21:21 ww3113306 阅读(291) 评论(0) 推荐(0)
摘要:~~~题面~~~ 题解: 通过观察可以发现,其实题目就是要求长度相等的字符串中有且只有1位字符不同的 ”字符串对“ 有多少。 因为数据范围不大, 所以考虑一种暴力至极的方法。 我们枚举是哪一位不同,然后通过hash验证,同时为了加速,我们先求出每一个字符串的前缀hash数组和后缀hash数组, 如果 阅读全文
posted @ 2018-07-25 16:12 ww3113306 阅读(211) 评论(0) 推荐(0)

知识共享许可协议
本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本许可协议进行许可。