kmp
Le_ballon_rouge
我是最讨厌、最粗鲁、最无知的人、彻头彻尾的讨厌鬼,任何人遇到我都是一种不幸。我轻视美德、无视美、不了解幸福。
展开
-
POJ2752
传送门:POJ2752傻逼题,注意前缀函数的定义就行了。代码上的小细节见下。#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <algorithm>#include <iostream>using namespace std;int ans[1000005];int f[10000原创 2015-08-22 14:51:29 · 1025 阅读 · 0 评论 -
BZOJ1355
传送门:BZOJ1355(权限题)显然[pre[len]+1..len]可作为一个循环串。 对于它是前缀的情况,以后缀拼接即可。 代码上的小细节见下。#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <algorithm>#include <iostream>using name原创 2015-08-24 09:37:59 · 1204 阅读 · 2 评论 -
BZOJ3620
传送门:BZOJ3620暴力做法小练习。本质上就是求一个串,又是前缀又是后缀,然后有各种奇奇怪怪的要求。 刚刚做了这种题…… 枚举左端点i,枚举右端点j,对于[i,j],记录它们之间>k的最小的既是前缀又是后缀的值,判断这个值是否小于等于(j-i)/2即可。 数据给出来就是暴力的,O(n2)O(n^2)能过真是感人肺腑。 代码上的小细节见下。#include <cstdio>#includ原创 2015-08-24 21:10:33 · 1041 阅读 · 0 评论 -
HDU4333
传送门:HDU4333扩展KMP小应用,把原串复制一遍就行了。对着某位博主的代码,死活改不出来,然后发现这货的代码是WA的……代码上的`小细节见下。#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <algorithm>#include <iostream>using namespa原创 2015-08-24 16:33:38 · 954 阅读 · 0 评论 -
BZOJ3670
传送门:BZOJ3670k(n)m(o)p(i)傻逼题。记num[i]为既是i前缀也是后缀的串的个数,这可以在kmp时一并求出。然后对于每个i,只要暴力找到最大的j令2*j<=i且j在i意义下既是前缀也是后缀就可以了,这只要一路检测条件然后pre回去,依然是线性的。代码上的小细节见下。#include <cstdio>#include <cstdlib>#include <cmath>#inc原创 2015-08-24 19:44:22 · 935 阅读 · 0 评论 -
ZOJ3643
传送门:ZOJ3643很有意思的KMP。 kmp就不说啥了。 这道题的瓶颈在于暴力删除会超时,于是我们观察注意到[l,r]被删除之后,造成的影响仅仅是下一次我们会从l-1开始匹配。 然后就可以乱搞了…… 栈里面存的是母串在子串中匹配到的位置。代码上的小细节见下。#include <cstdio>#include <cstdlib>#include <cmath>#include <cs原创 2015-08-26 16:12:40 · 1046 阅读 · 0 评论 -
BZOJ1009
传送门:BZOJ1009KMP构造转移矩阵,矩阵加速DP。 以后题解都会简单一些。/************************************************************** Problem: 1009 User: Jerusalem Language: C++ Result: Accepted Time:56 ms原创 2015-08-17 20:40:31 · 1457 阅读 · 0 评论