字符串-杂类
字符串-杂类
ZSJZ_liuzian
QQ:2755815294
WeChat:15398814619
备注校名、年级、姓名
展开
-
回文树 回文自动机 模板
#include<cstdio> #include<cstring>#include<algorithm>using namespace std;#define N 500010char st[N];struct { int len, fail, p[26], dp;}a[N];int tot = 1;int main() { int i, j; a[0].dp = a[1].dp = 0; a[0].len = 0, a[1].len = -原创 2021-04-06 09:52:58 · 142 阅读 · 0 评论 -
AC自动机 模板
#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;#define N 2000010#define M 3010queue<int> q;char st[N];struct { int p[26], s = 0, fail;}a[M * 10];int tot = 1;int main() { in原创 2021-04-06 09:51:31 · 104 阅读 · 0 评论 -
GDKOI 2021 提高组 Day2 第三题 抄写(manachar+线段树维护DP)
GDKOI 2021 提高组 Day2 第三题 抄写题目大意要求按顺序写完一段小写字母组成的长为nnn的字符串,可以直接添加一个字符iii,代价为cic_ici,也可以用当前末尾的部分轴对称,代价为CCC,求最小代价。n≤106n\le10^6n≤106题解先考虑n2n^2n2的DP转移,fi=min(fi−1+ci,fj+C)f_i=min(f_{i-1}+c_i,f_j+C)fi=min(fi−1+ci,fj+C),其中jjj是能作为对称轴的位置,可以用manachar预处理,原创 2021-02-01 22:04:24 · 172 阅读 · 0 评论 -
GDKOI 2021 提高组 Day1 第三题 回文(manachar+ST表)
GDKOI 2021 提高组 Day1 第三题 回文题目大意给出长为nnn的串,和qqq组询问,每次询问区间中的最长回文串。n,q≤5∗105n,q\le5*10^5n,q≤5∗105题解可以先用manachar求出以每个位置为中心的回文串,询问时二分答案,然后在区间中判断是否存在长度为midmidmid的回文串,用ST表维护区间最值。注意二分判断时并非在整个区间[l,r][l,r][l,r]中找最大值,而需分别将左端点右移和右端点左移大约midmidmid(因奇偶而不同)的位置,以保证找原创 2021-01-31 20:54:19 · 179 阅读 · 0 评论 -
回文树 回文自动机 PAM 入门学习详解
回文树 回文自动机 PAM是什么顾名思义,回文自动机是一种自动机,其中的每个状态表示的是一个回文串,可以用来解决与回文串有关的许多问题。和其他自动机一样,它也有转移边(树边)和失配指针(fail)。其中转移边表示的是在原回文串的两边各加一个字符,得到长度加222的新回文串;fail指针则指向该回文串的最长回文后缀。和其他自动机有所不同,它有两个根节点, 分别代表长度为偶数的串和长度为奇数的串。它们的长度分别为000和−1-1−1(注意不是111,为了添加222的长度可以得到长为111的回文串),以原创 2020-12-23 22:17:21 · 267 阅读 · 0 评论 -
JZOJ 3159. 【JSOI2013】广告计划(字符串哈希)
JZOJ 3159. 【JSOI2013】广告计划题目Description如今,在建筑的墙面上或者篱笆桩的表面上涂上一些广告,是一种新的吸引眼球的方法。现在,小G运营的一家小公司,决定也试着这样做做广告。小G在他的篱笆桩上腾出了一些地方供广告使用。每一个篱笆桩都是一个水平的1∗1∗L1*1*L1∗1∗L 的四棱柱,其中有一个1∗L1*L1∗L的面是可以做广告的。1∗L1*L1∗L的面上划...原创 2019-02-16 21:18:32 · 237 阅读 · 0 评论 -
Manacher算法操作详解
Manacher问题引入求一个长度为nnn的字符串中回文子串的个数?(或:求一个长度为nnn的字符串中最长的回文子串的长度?)回文串:一个正读和反读相同的字符串,称之为回文串。用已有的知识算法一:枚举开头,枚举结尾,得到一个串,再扫一遍判断是否为回文串,若是,答案加111,时间复杂度O(n3)O(n^3)O(n3)。算法二:枚举开头,枚举结尾,得到一个串,用字符串哈希判断其是否...原创 2020-03-27 22:02:04 · 324 阅读 · 1 评论 -
JZOJ 6470. 【GDOI2020模拟02.13】小 B 的环(字符串哈希)
JZOJ 6470. 【GDOI2020模拟02.13】小 B 的环题解简化一下题目就是问删去一段子串或一段前缀+后缀,且删去总长度为kkk(k∈[0,n)k\in[0,n)k∈[0,n))能不能使剩下部分首尾相接后相邻字符不同,方便起见,可以把字符串倍长,这样只通过删去前缀+后缀可以达到一样的目的。题目是要删去,不妨换种思路,改成保留lll个长度(l∈[1,n]l\in[1,n]l∈[...原创 2020-02-15 16:06:37 · 297 阅读 · 0 评论 -
JZOJ 3189. 【GDOI2013模拟8】解密(KMP)
3189. 【GDOI2013模拟8】解密题目DescriptionMirko要解一段加密文,但他只知道某一个句子是原文的一部分。你的任务是要在密文中找到第一个对应这个句子的地方。文段是通过用某个单词(可能和原文一样的单词)替换原始文段每一个单词来加密的。如果某些单词在原文出现一次以上,就会使用相同的替换单词来替换。没有两个不同的单词使用相同的替换单词。单词是通过空格隔开的小写字母序列。...原创 2019-04-01 14:42:20 · 245 阅读 · 0 评论 -
Trie字典树 基本操作
Trie字典树先看一道例题:给出n个字符串,以及m个询问。每次询问读入一个字符串,求该字符串是多少个字符串的前缀。 每个字符串长度小于10210210^2,n和m小于10510510^5。【输入】 5 abc ab bbcd bbb abck 5 ab bb a abc bc【输出】 3 2 3 2 0朴素算法:暴力搜索,对于每个询问,把所有...原创 2018-08-16 21:51:07 · 315 阅读 · 0 评论