字符串
Daniel__d
这个作者很懒,什么都没留下…
展开
-
P4199-FFT,manacher
P4199 题目描述 题解 代码 #include<bits/stdc++.h> #define ll long long #define LL unsigned long long #define M 2000009 using namespace std; int read(){ int f=1,re=0;char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar()); if(ch=='-'){f=-1,ch原创 2020-08-01 20:51:29 · 126 阅读 · 0 评论 -
P4173 残缺的字符串(单模式字符串匹配FFT)
P4173 题目描述 题解 代码 #include<cmath> #include<cstdio> #include<climits> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> using namespace std; int read(){ int f=1,re=0;char ch; for(ch=getcha原创 2020-07-31 21:36:23 · 183 阅读 · 0 评论 -
工艺-后缀自动机
工艺-后缀自动机 题目描述 题解 对于字符集大小不为常数的后缀自动机题,可以暴力建mapmapmap 首先倍长序列,对倍长过后的序列建后缀自动机,然后根据贪心,直接从根节点遍历n次输出答案即可(其实还是有点不懂) (坑:数组必须开到1e6,不知为啥) 代码实现 #include<bits/stdc++.h>//SAM #define M 1000009 using namespace...原创 2020-03-29 10:51:46 · 109 阅读 · 0 评论 -
SP1812-LCS2-后缀自动机
SP1812-LCS2-后缀自动机 题目描述 题解 对于一个串构建SAMSAMSAM 每个串依次进行匹配 同时记录tr[i].maxntr[i].maxntr[i].maxn表示走到了iii节点能够匹配上的最长公共子串的长度 当然,每个串的tr[i].maxn可以更新tr[tr[i].fa].maxntr[tr[i].fa].maxntr[tr[i].fa].maxn 所以需要拓扑排序 对于每个...原创 2020-03-29 10:52:01 · 172 阅读 · 0 评论 -
SPOJ1811-LCS-后缀自动机
SPOJ1811-LCS-后缀自动机 题目描述 题解 首先对AAA串建立一个后缀自动机,然后让BBB串一个一个字符去匹配; 匹配方式: 首先置len=0len=0len=0,然后从根节点开始遍历下去 1,如果当前节点存在,就len++len++len++,继续遍历下一个节点 2,如果当前节点不存在,就跳该节点的fafafa, 2.1,如果跳的过程中找到了该节点,那么就继续从该节点遍历下去,len...原创 2020-03-29 10:52:11 · 159 阅读 · 0 评论 -
A Horrible Poem-字符串哈希+线性筛
A Horrible Poem-字符串哈希+线性筛 题目描述 题解 首先明确几个性质 1,循环节的长度必为该区间S[a...b]S[a...b]S[a...b]长度的约数—显而易见 2,当S[a...b−len]==S[a+len...b]S[a...b-len]==S[a+len...b]S[a...b−len]==S[a+len...b]时,S[x...y]S[x...y]S[x...y]必...原创 2020-03-29 10:52:20 · 613 阅读 · 0 评论 -
HDU3973-字符串哈希+线段树
HDU3973-字符串哈希+线段树 题目描述 即给你一个母串,和nnn个字符串,mmm次操作,每次操作有两种:1,询问母串中l到r位置的字串是否在nnn个字符串中出现过;2,修改母串中xxx位置的字母 题解 字符串哈希套线段树裸题(注意查询操作,对于类似的区间合并,常用该种查询方式) 还有一个坑,代码中有说 代码实现 #include <stdio.h>//字符串哈希套线段树-AC #...原创 2020-03-29 10:52:31 · 238 阅读 · 0 评论 -
回文字串-字符串哈希
回文子串-字符串哈希 前言 求解回文字串问题不仅可以用马拉车算法(O(n))(O(n))(O(n)),也可以用字符串哈希(O(nlogn))(O(nlogn))(O(nlogn)) 解法 首先我们发现回文子串具有“单调性”,即如果s[i...j]s[i...j]s[i...j]为回文子串,那么s[x...y]s[x...y]s[x...y]也为回文子串(i<x<y<j)(i<...原创 2020-03-29 10:52:41 · 969 阅读 · 0 评论 -
191021-KMP算法
KMP算法 模板 #include<bits/stdc++.h> using namespace std; int n,m,T,nxt[100009]; char s[100009],t[100009]; int main() { scanf("%d",&T); while(T--) { scanf("%s%s",s+1,t+1); n=strlen(s+1); ...原创 2019-10-31 20:01:27 · 110 阅读 · 0 评论