
--------------字符串-------------
doggyzheng
初二蒟蒻一枚
展开
-
Exkmp
var extand,next:array[0..100000] of longint; s,s1:ansistring; l,l1,n,m,i,j,p,a:longint; begin readln(s); readln(s1); l:=length(s); l1:=le原创 2017-07-11 16:30:01 · 309 阅读 · 0 评论 -
回文树
JZOJ3654. 【APIO2014】回文串(palindrome) Description 考虑一个只包含小写拉丁字母的符串 s。我们定义 s的一个子串 t的“出现值”为 t在 s中的出现次数乘以t的长度。 请你求出s的所有 回文子串中的最大出现值。 Input 输入只有一行,为一个只包含小写字母 (a−z) 的非空字符串 s。 Output 输出 一个整数,为 所有 回文子串 的原创 2018-02-03 10:15:05 · 178 阅读 · 0 评论 -
manacher
#include #include #include #define min(a,b)(((a) using namespace std; const int maxN=40010; char c,s[maxN],t[maxN]; int tot,n,i,wz[maxN],id,mx,len[maxN],ans,ans1; int main(){ //freopen("a.in","原创 2018-02-03 21:20:14 · 319 阅读 · 0 评论 -
4372. 【GDOI2016模拟】识别子串(SAM+线段树)
题目 有一个字符串SSS,T=S[i..j]T=S[i..j]T=S[i..j]是kkk的的识别子串当且仅当 1.i<=k<=ji<=k<=jiTTT在SSS中仅出现一次 求每个位置最短的识别子串 想法 想到用SAM搞定每个子串的出现次数,然后用线段树区间修改 SAM上的状态i表示的是以某个位置xxx为右端点,以x−len[i]+1....x−mi[i]+...原创 2018-07-13 22:40:18 · 347 阅读 · 0 评论 -
exkmp
void make(){ mx=1,a=2; while (s[1+mx]==s[mx] && mx<m) mx++; nex[1]=m,nex[2]=mx-1,a=2; fo(i,3,m){ if (nex[i-a+1]<mx-i+1) nex[i]=nex[i-a+1]; else{ j=max(0,mx-i+1); while (s[i...原创 2019-07-10 19:38:27 · 168 阅读 · 0 评论