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