摘要: 扩展KMP的应用 我们发现本题的关键在于如何高效的判断两个 同构字符串 的大小关系,想到如果能够预处理出每一个同构字符串与原字符串的最长公共前缀,那么直接比较它们不一样的部分就好,扩展KMP正好是用来处理这样的问题的,把原串copy一遍加在其后,在其上跑一遍exKMP的next数组,就预处理出了所有 阅读全文
posted @ 2017-12-07 22:00 Mr_Wolfram 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 扩展KMP解决这样一些问题: 给定两个字符串 S 和 T(长度分别为 n 和 m),下标从 0 开始,定义extend[i]等于S[i]...S[n 1]与 T 的最长相同前缀的长度,求出所有的extend[i]。 时间复杂度(n+m) cpp include include include inc 阅读全文
posted @ 2017-12-07 21:12 Mr_Wolfram 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 最大最小表示法与KMP求循环节 "最大最小表示法" 最大最小表示法与KMP求循环节的模板题, cpp include include include include include include using namespace std; const int MAXN=2000005; int in 阅读全文
posted @ 2017-12-07 14:25 Mr_Wolfram 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 最大最小表示法与去重 可以发现,题目中是求不同构环的数目,我们可以采用最大最小表示法,将它们都最大/最小表示出来,再判断有几个不同的, 可以使用string类,操作较为简单,也可以使用自定义struct 二维字符数组, 去重可以使用 sort+unique 可以使用 set 也可以字符串哈希 cpp 阅读全文
posted @ 2017-12-07 10:01 Mr_Wolfram 阅读(125) 评论(0) 推荐(0) 编辑