随笔分类 - 字符串
摘要:https://loj.ac/p/6564 题意:求两个字符串的最长公共子序列,串长、字符集 \(\le 7\times10^4\)。 分析 我们知道,求 LCS 的经典方法是 DP,状态已经是 \(O(n^2)\) 级别,而且无法省掉状态。但是,我们可以发现,对所有 \(i,j\) 都有 \(f_
阅读全文
摘要:题意 给定字符串 \(s\),求其长度最大的子串 \(t\),使得 \(t\) 可以看做由字符串 \(w\) 按照 \(ww^Rww^R\) 的顺序拼接而成,其中 \(w^R\) 代表 \(w\) 翻转后的结果。 \(|s|\le 5\times10^5\) 分析 一个直观的想法是枚举第二个(最中间
阅读全文
摘要:题意 给定字符串 \(s\),\(q\) 次询问 \(s[l,r]\) 的 border。 \(n,q\le 2\times10^5\) 题意 这里介绍的是 SAM+树剖的双 log 做法。 假设 \(s[l,r]\) 的 border 是 \(s[l,x]\),则其一定满足 \(s[l,x]=s[
阅读全文
摘要:后缀自动机实际上就是接收字符串所有后缀的最小 DFA,它的一个基本性质就是任何一个子串都能表示为从根节点出发的一条路径。它的点数和边数都只有 \(O(n)\) 级别,所以它能在更好的复杂度内解决一些子串的出现次数之类的问题。由于我太菜了,这里只会说 SAM 的构造。 约定: 若无特殊说明,假设 \(
阅读全文
摘要:题意 给定一个字符串 \(s\),令 \(s^R\) 表示 \(s\) 翻转后的结果。\(q\) 次询问,每次询问给定 \(i,r\),求有多少个 \(1\le l\le r\) 满足 \(s_{i\cdots i+l-1}<s_{i+l\cdots i+2l-1}^R\)。 多测,\(T\le 5
阅读全文
摘要:题意 定义长为 \(2n\) 的字符串 \(s\) 为“双串”当且仅当 \(s_{1\cdots n}=s_{n+1\cdots 2n}\)。 定义字符串 \(s\) 的“优秀的拆分”为将该字符串分成两部分,每部分非空且都为双串。一个字符串可能有 0 种或多种优秀的拆分。 对于给定字符串 \(s\)
阅读全文
摘要:题意 给定一个字符串 \(s\),对其每一个前缀求本质不同子串个数。 \(n\le 10^5,|\Sigma|=O(n)\)。 分析 求本质不同子串个数有经典结论是 总个数 减去 height 数组总和。 而对每个前缀求,实际上就是每次往 sa 数组里面插入一个数,然后动态维护 height 和。只
阅读全文
摘要:题意 给你 \(n\) 个串 \(s_i\),你需要选出 \(k\) 个串并按照某个顺序拼接起来形成的字符串字典序最小。 \(n,k,|s|\le 50\)。 分析 由于顺序不固定,所以我们无法直接 DP。而状压的复杂度也太高了,怎么办呢? 考虑钦定一个顺序,使得按照这个顺序排列字符串一定最优。 一
阅读全文
摘要:题意简述 定义后缀 \(p,q\) 是 \(r\) 相似的当且仅当 \(\forall 1\le i\le r,s_{p+i-1}=s_{q+i-1}\)。 对于每一个 \(0\le r<n\),求出: 有多少对 \(r\) 相似的后缀。 每个后缀有权值 \(a_i\),求在所有 \(r\) 相似的
阅读全文
摘要:题意简述 有一个字符串 \(s\) 和 \(n\) 条限制,每条限制给出字符串 \(t_i\) 和两个整数 \(l_i,r_i\),要求一个字符串要满足在 \(t_i\) 中的出现次数要在 \([l_i,r_i]\) 之间。求 \(s\) 有多少本质不同的子串满足所有限制。 \(|s|,\max |
阅读全文
摘要:题意简述 有长度为 \(n\) 的 01 串,你现在要选出 \(k\) 个两两无交子串,使得将 \(k\) 个子串按照出现位置排序后,后者的字典序严格比前者大。最大化 \(k\)。 \(\bm{n\le 2\times10^4}\)。 分析 首先的首先观察数据范围可知此题应该是个线性根号对数的时间复
阅读全文
摘要:隔壁 CF316G3 远比这题难吧,为什么那题 2400 这题 2700? 题目描述 有 \(n\) 个字符串 \(t_i\),第 \(i\) 个字符串的价值为 \(c_i\)。现在想求一个字符串函数 \(f(S)=\sum_{i=1}^n |S|\cdot c_i\cdot p_{S,t_i}\)
阅读全文

浙公网安备 33010602011771号