![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【算法】KMP算法
文章平均质量分 78
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ1009】【HNOI2008】GT考试
【题目链接】点击打开链接【思路要点】先用KMP(或者暴力)求出匹配了\(i\)位后出现一个字母\(c\),最大能匹配多少位。然后矩阵乘法优化DP即可。时间复杂度\(O(M^3LogN)\)。【代码】#include<bits/stdc++.h>using namespace std;#define MAXLOG 31#define MAXN 55template <typ...原创 2018-02-18 16:25:55 · 282 阅读 · 0 评论 -
【BZOJ3670】【UOJ5】【NOI2014】动物园
【题目链接】BZOJUOJ【思路要点】做两次KMP,第一次求出Next数组,第二次保证匹配位数不超过当前串的一半(否则视为失配),求出Num数组。时间复杂度\(O(NL)\)。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1000005#define P 1000000007template <...原创 2018-02-28 20:04:08 · 297 阅读 · 0 评论 -
【CodeForces】CodeForces Round #502 (Div. 1 + Div. 2) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**The Rank 【思路要点】 按照题意模拟。 时间复杂度O(N)O(N)O(N)。 【代码】 #include&lt;bits/stdc++.h&gt;using namespace std;const int MAXN = 100...原创 2018-08-13 15:33:05 · 324 阅读 · 0 评论 -
【省内训练2018-09-13】Border
【思路要点】 注意到字符串的生成方式近乎随机,不妨认为对于一个后缀 S[i...N]S[i...N]S[i...N] 与其余后缀的 LCPLCPLCP 的最大值 kikik_i 不会很大,事实上,当字符串随机时, kikik_i 期望为 O(LogN)O(LogN)O(LogN) 级别。 用后缀树求出 kikik_i ,那么 S[i...i],S[i...i+1],...,S[...原创 2018-09-13 16:08:39 · 340 阅读 · 0 评论 -
【LOJ3055】「HNOI2019」JOJO
【题目链接】点击打开链接【思路要点】考虑将字符串缩成若干个相同字符的段 (cnt,char)(cnt,char)(cnt,char) ,相邻的字符不相同。考虑一个与某一个前缀匹配的后缀,若该后缀横跨了 x (x≥2)x\ (x\geq2)x (x≥2) 段,那么其对应的第 222 段至第 x−1x-1x−1 段的 (cnt,char)(cnt,char)(c...原创 2019-04-23 13:54:50 · 826 阅读 · 0 评论 -
【BZOJ4231】回忆树
【题目链接】点击打开链接【思路要点】分开处理路径上竖直的字符串和在 LcaLcaLca 处拐弯的字符串。在 LcaLcaLca 处拐弯的字符串总数在 O(∑∣S∣)O(\sum|S|)O(∑∣S∣) 级别,可以直接 KmpKmpKmp 判断。竖直的字符串可以在离线询问后通过 ACACAC 自动机和树状数组处理。时间复杂度 O(NLogN+MLogN+∑∣S∣)O(NLogN...原创 2019-04-22 14:54:01 · 548 阅读 · 0 评论 -
【LOJ3123】「CTS2019」重复
【题目链接】点击打开链接【思路要点】考虑计算经过无限重复后不能够找到有意义的语段的基本句子数,下称不合法的基本句子数。首先我们需要一个算法来判断某一基本句子 ttt 是否不合法。将 ttt 重复足够多次,在 sss 的 kmpkmpkmp 自动机上跑,记当前节点为 pospospos , ttt 中下一个字符为 ccc ,若 ccc 小于 pospospos 在 failfa...原创 2019-05-31 09:40:41 · 905 阅读 · 0 评论 -
【LOJ3103】「JSOI2019」节日庆典
【题目链接】点击打开链接【思路要点】考虑一种暴力维护候选点集的做法。即,在字符串不断增长的同时,若已经可以确定 TiT_iTi 不再可能成为字典序最小的循环后缀,则将 iii 在候选点集中删除。一个显然的事实是,令当前字符串已有 kkk 位,考虑 i<ji<ji<j ,若 Lcp(Ti,Tj)<k−j+1Lcp(T_i,T_j...原创 2019-06-20 20:27:10 · 954 阅读 · 0 评论