随笔分类 - 字符串
摘要:CF1483F - Exam 题目大意 给定$n$个不同串$s_i$,令$s_i\sub s_j$表示$s_i$是$s_j$的子串 求所有二元组$(i,j)(i\ne j)$满足 \(s_i\sub s_j,\nexists k\ne i,k\ne j,s_i\sub s_k\sub s_j\) 分
阅读全文
摘要:CF1037H - Security 题目大意 给定一个串$S$,每次查询一个区间$[l,r]$和一个串$T$ 求$[l,r]\(内字典序\)>T$的最小的子串$R$ 分析 复习$\text$ 显然可以枚举$T$匹配$R$的长度,然后枚举下一位字符,判断形成的串是否在$[l,r]$内有出现 匹配问题
阅读全文
摘要:CF1276F - Asterisk Substrings 题目大意 给定串$S,|S|=n$,设一个串的子串集合为$Sub(S)$ 求$|Sub(S) \cup Sub(+S[2:n])\cup Sub(S[1:1]++S[3:n])\cup \cdots|$ 其中*表示特殊字符而不是通配符 分析
阅读全文
摘要:CF1082F - Speed Dial 题目大意 给定$n$个电话号码,你可以随意生成$k$个快捷键,每个快捷键是一个数字串 最终拨号方式: 选择 至多一个 快捷键按下,对于剩余部分手动补全,且不允许退格 每个电话号码有拨打次数,最小化手动补全部分的长度总和 分析 如果每次选定一个集合使其公用一个
阅读全文
摘要:CF1366G - Construct the String 题目大意 给定一个初始串$S$和目标串$T$ 其中$S$除了包含字母外还包含删除标记'.' 具体的$S$表示的字符串$f(S)$,就是依次加入每个字母,或者在删除标记处删除上一个字符(不存在这个字符则非法) 求删除$S$中最少的字符,使得
阅读全文
摘要:CF1393E2 - Twilight and Ancient Scroll (harder version) 题目大意 给定$n$个串$S_i$,求在每个串中至多删除一个字符(可以删到空) 最终$S'_i$字典序单调不减的方案数 dp 显然是记录上一个串删除的位置$j$,得到$dp_j$,依次考虑
阅读全文
摘要:「HAOI2018」字串覆盖 这自然有后缀数组和后缀自动的写法,我写的是后缀数组 现对于$A,B$两串拼接后建立$\text$ 对于查询的四个参数$[s,t,l,r]\(,在\)\text\(上找到能够匹配\)[l,r]\(的\)\text\(区间\)[l',r']$ 这个$[l',r']\(就用\
阅读全文
摘要:[NOI Online 2021 提高组] 积木小赛 题目大意:给定串$A$,\(B\),求$B$中有多少本质不同的连续子段是$A$的子序列 \(n\leq 3000\) 暴力枚举$B$中的子段,同步维护与$A$的匹配指针$p$ 每次插入一个字符$c$,找到$A$中$p+1$之后第一个字符$c$,令
阅读全文
摘要:「BalticOI 2020」病毒 设点集大小为$N$,边集总长度$\sum k=M$,模板串总长$L=\sum ℓ$ 涉及到多串匹配的转移问题,容易想到$\text$自动机 因为本题状态非常少,可以暴力矩阵维护转移,暴力计算由状态$i$转移至状态$j$,且中途不匹配的最小长度 有$NL^2$个状态
阅读全文
摘要:「ROI 2016 Day2」二指禅 考虑对于每个点,有前缀和后缀两种转移 对于两种转移分别建立$\text$树,并且维护最小权值,对于$dp_i$,可以匹配一段后缀从$j<i$得到 也可以匹配一段前缀更新$j>i$,分别$O(n)$枚举在两棵树上匹配即可完成转移 暴力转移复杂度为$O(n^2)$
阅读全文
摘要:「ROI 2019 Day2」模式串查找 (口胡) 设$S=\sum |w_i|$ 显然我们需要一个树形数据结构来维护题目中添加字符的操作 归纳一下,需要实现的操作就是: 1.添加一个新串 2.在当前串中分裂一段区间$[L,R]$ 3.将一个串复制$k$次 将每一个单字符视为一个节点,考虑用一个可持
阅读全文
摘要:「CTSC2016」香山的树 (KMP+dp) 题目大意 对于所有的串,满足: 其是本身的最小循环同构。 其最小循环同构位置唯一。 给定一个这样的串,求其字典序在所有合法串中的 \(\text{rank}\),以及求 \(\text{rank}=k\) 的串。 简要分析 这是一个暴力的做法,有一定优
阅读全文
摘要:「ICPC World Finals 2019 何以伊名始 本题现已知四种做法,如果不会后缀系列结构可以直接看Solution4 设初始树大小和查询总长均为$O(n)$ Solution1 由于查询只有1e6,因此出现的不同查询串长度最多$O(\sqrt {10^6})=1500$种 考虑对于每一种
阅读全文
摘要:COCI2013-2014 Contest#1 F SLASTIČAR 其实挺妙的一个数据结构题 题意: 给定一个A串,对于查询的每个$B$串,从头开始匹配匹配$A$的每个后缀,每次匹配失败的代价是$\text+1$可,匹配成功的代价是$|B|$,且立即停止,求代价总和 设$A$串长为$n$,查询个
阅读全文
摘要:#[HDU-6791] 2020HDU多校第三场T1(回文自动机) 前置知识: 1.字符串的$\text$ 2.回文自动机 3.回文串与$\text$ 3.1:回文串的$\text$也是回文串 若有回文串$S$的一个$\text :T$,则$S_{1,|T|}=S_{|S|-|T|+1,|S|}=r
阅读全文
摘要:回文自动机 (PAM,Palindrome Automaton) 如果学习了$\text\(自动机和后缀自动机(\)\text$),那么这个冷门算法其实非常简单 约定:原字符串为$S$,长度为$|S|$ 结构介绍 自动机节点意义: $\text\(没有复杂的结构,每个节点对应了一种回文子串,节点个数
阅读全文
摘要:字符串的Period(周期),Border 前置知识:\(\text{kmp}\),$\text$自动机 约定:字符串$S$的长度为$|S|$,原串的长度为$n$,$[l,r]$的子串为$S_{l,r}$,下标从$1$开始,前缀$S_{1,i}=pre_i$,后缀$S_{i,n}=suf_i$,设$
阅读全文
摘要:「CTS2019 | CTSC2019」重复(Kmp) Part1 首先我们考虑对于一个已经确定的$t$串,如何检查是否合法 对于$s$串建立$\text\((\)\text$自动机当然可以), 如果当前$\text$指针$j$在$\text$树上的祖先所对应的所有下一个位置$s[ancestor+
阅读全文
摘要:"HDU 4117" 构建AC自动机 dp从每一个的子串上转移过来 转移过程中不断匹配,然后统计$fail$树上前缀的最大值,这是一个动态的过程 于是我们用树剖线段树动态维护
阅读全文
摘要:"HDU 5069" 求后缀与前缀的最大匹配长度 我写的很暴力 首先对于前一个字符串,直接匹配到末尾,其实接下来就是求$fail$树上的这段前缀上的每一个点与后一个串在$trie$树上的位置的最长公共前缀长度 我的做法是:将$trie$树树剖,依次访问$fail$树上的每一个节点回答询问 访问$fa
阅读全文