随笔分类 -  字符串

该文被密码保护。
posted @ 2022-07-31 20:23 oisdoaiu 阅读(1) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2022-07-28 18:20 oisdoaiu 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2022-06-25 12:00 oisdoaiu 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2022-04-06 17:38 oisdoaiu 阅读(0) 评论(0) 推荐(0)
摘要:tag:SAM,矩阵乘法,分治 首先我们要知道一个 trick,如何把两个 SAM 拼起来。 大概就是对于第一个 SAM 上的所有点,如果某个字符 \(c\) 没有出边,就连向第二个 SAM 的根结点的 \(c\) 出边指向的点。 这样最后会构造出来一个自动机,每一条路径都对应着一个题目中要求的字符 阅读全文
posted @ 2021-07-09 08:41 oisdoaiu 阅读(32) 评论(0) 推荐(0)
摘要:tag:SAM,矩阵乘法,分块 首先我们要知道一个 trick,如何把两个 SAM 拼起来。 大概就是对于第一个 SAM 上的所有点,如果某个字符 \(c\) 没有出边,就连向第二个 SAM 的根结点的 \(c\) 出边指向的点。 这样最后会构造出来一个自动机,每一条路径都对应着一个题目中要求的字符 阅读全文
posted @ 2021-07-08 16:45 oisdoaiu 阅读(31) 评论(0) 推荐(0)
摘要:tag:扫描线,PAM,BIT 首先一个区间合法有两种情况: 存在一个长度大于 \(1\) 的奇回文串 被若干偶数回文串覆盖 这些回文串都必须在区间内 第一种情况很好处理,随便预处理一下。 主要是第二种情况。 直接做不太好做,可以改为判断,是否有一个位置没有被回文串覆盖。 对于一个点来说,有用的回文 阅读全文
posted @ 2021-07-07 19:38 oisdoaiu 阅读(34) 评论(0) 推荐(0)
摘要:tag:SAM,LCT,线段树 LCT+SAM维护endpos套路,先建出SAM,然后从左到右Access(pos[i])的同时处理询问。 每次Access的时候到根链会分成若干段,每段的endpos相同,所以对于这个点代表的某个串来说,当询问的 \(l\le endpos-len+1\) 时,这个 阅读全文
posted @ 2021-07-02 16:38 oisdoaiu 阅读(38) 评论(0) 推荐(0)
摘要:tag:SAM 提供一种不用广义$SAM$的做法 对$s$建$SAM$,然后用$t$去跑匹配,对于当前$i$,匹配到的节点为$cur$,匹配长度为$nowlen$ 若$cur$不是$SAM$的$parent$树叶子节点,则continue 否则说明$t$中$len\in[len(fa(cur))+1 阅读全文
posted @ 2021-07-01 15:15 oisdoaiu 阅读(43) 评论(0) 推荐(0)
摘要:tag:SAM,倍增 贡献一个用广义$SAM$,不用大力数据结构的做法 把问题分成两部分解决 求一个字符串在多少个$a_i$中出现过 枚举一个串的一个点$i$,求以$i$为右端点的,在至少$k$个$a_i$中出现过的字符串个数 Case 1 对于第一个问题,可以建广义$SAM$,记录$_j$在$SA 阅读全文
posted @ 2021-07-01 15:14 oisdoaiu 阅读(49) 评论(0) 推荐(0)
摘要:tag:2-SAT,trie优化建图 注意到每个串只有一个 ? (只有 \(2\) 种状态),所求的是构造方案,所以考虑使用 2-SAT。 于是进一步想到如果 \(x_0,y_0\) 一个是另一个的前缀,就 \(x_0\to y_1,y_0\to x_1\)。 那么容易想到暴力 \(n^2\) 建图 阅读全文
posted @ 2021-07-01 15:11 oisdoaiu 阅读(292) 评论(0) 推荐(0)
摘要:给定一个字符串,求出以每个位置为中心的最长回文子串。 流程 设 \(mxr\) 为当前所有回文串的最大的右边界,\(mid\) 为对应的中点 为了防止中点在两个位置中间,将原串的每两个字符间和开头结尾都塞一个相同的无关字符 若 \(i\leq mxr\),令 \(f_i=\min(f_{2mid-i 阅读全文
posted @ 2021-06-25 09:17 oisdoaiu 阅读(42) 评论(0) 推荐(0)
摘要:tag:可持久化线段树,扫描线,哈希 对于 \(40%\) 的暴力,不难想到直接暴力求出所有的列表,然后nth_element 考虑拓展这个做法,实际上如果用扫瞄线求出所有列表的话,变动只有 \(O(n)\) 次,于是想到可持久化数组。注意要去重,所以再加个哈希。 求答案的时候还是使用nth_ele 阅读全文
posted @ 2021-06-25 09:10 oisdoaiu 阅读(39) 评论(0) 推荐(0)
摘要:6.1还在考试的屑 tag:SAM,PAM 最终的回文串一定由这样的形式组成: \(s1+s2+s3\) 其中 \(s1\) 为 \(a\) 串子串,\(s3\) 为 \(b\) 串子串,且 \(s1=rev(s3)\)。 \(s2\) 为一个回文串(可以是 \(a\) 的子串也可以是 \(b\) 阅读全文
posted @ 2021-06-25 09:09 oisdoaiu 阅读(34) 评论(0) 推荐(0)
摘要:tag:后缀树 建出后缀树,那么答案一定是叶节点。 dfs后缀树,每次走向的那条边的字符一定大于所有其他边的字符,就连一条边过去。 最后看一看有没有环。(传递闭包后自己大于自己) 复杂度 \(O(|S|^2n)\),\(S\) 为字符集,实际跑得挺快。 评测姬数据有问题,输入得用while(~sca 阅读全文
posted @ 2021-06-24 16:20 oisdoaiu 阅读(41) 评论(0) 推荐(0)