kmp
SC.ldxcaicai
我很菜=_=
展开
-
2018.09.18 atcoder Best Representation(kmp)
传送门思路简单不知为何调试了很久。显然要么分成n个(所有字符相同),要么分成1个(原字符串无循环节),要么分成两个(有长度至少为2的循环节)。一开始以为可以直接hash搞定。后来wa了几次之后发现可以轻松举出反例于是弃了hash。kmp大法好啊,判完循环节之后直接枚举两个子串的断点判是不是前缀与后缀同时满足条件就行了。代码:#include<bits/stdc++.h>...原创 2018-09-18 22:13:36 · 443 阅读 · 0 评论 -
2018.10.22 bzoj1009: [HNOI2008]GT考试(kmp+矩阵快速幂优化dp)
传送门f[i][j]f[i][j]f[i][j]表示从状态“匹配了前i位”转移到“匹配了前j位”的方案数。这个东西单次是可以通过跳kmp的fail数组得到的。考虑到每次都是一样的就可以用矩阵快速幂优化一波。代码:#include<bits/stdc++.h>using namespace std;int n,m,mod,fail[21];bool vis[21][10]...原创 2018-10-22 23:27:05 · 137 阅读 · 0 评论 -
bzoj3075: [Usaco2013]Necklace(kmp+dp)
传送门题意简述:给出S,TS,TS,T两个字串,∣S∣≤10000,∣T∣≤1000|S|\le10000,|T|\le1000∣S∣≤10000,∣T∣≤1000,问至少从SSS中删去几个字符能够使得TTT不是修改后的SSS的字串。思路:考虑正难则反转化问题。只需要求所有使得TTT不为SSS字串的SSS的字符数最大值。于是设计状态fi,jf_{i,j}fi,j表示SSS中前iii个...原创 2019-03-01 21:47:41 · 308 阅读 · 0 评论 -
bzoj4462: [Jsoi2013]编程作业(kmp)
传送门题意:给定一个母串和一个模式串,求匹配位置数。其中小写字母可以作置换。思路:大写字母不动。考虑如何变化小写字母。假设当前是第iii为是aaa,上一个aaa在jjj,我们把第iii位变成i−ji-ji−j。这样跑kmpkmpkmp貌似挺有道理的。然后每次匹配的时候每个小写字母第一次出现时要特判。代码:#include<bits/stdc++.h>#defin...原创 2019-07-13 22:32:41 · 188 阅读 · 0 评论