摘要: Manacher 下面的叙述中,约定字符串下标从 \(0\) 开始。 定义 Manacher 算法应用于一个特定场景:静态求一个字符串的最长回文子串。复杂度 \(O(N)\),是这种场景中效率最高的回文串算法。 首先考虑暴力法:枚举中心点,向左右扩展,判断它左右对称的位置是否相同。暴力法的复杂度上界 阅读全文
posted @ 2025-02-23 21:32 Laoshan_PLUS 阅读(34) 评论(0) 推荐(0)
摘要: P2178 [NOI2015] 品酒大会 题面啰唆,实际上所谓 “\(p\) 和 \(q\) 是 \(r\) 相似” 的意思就是以 \(p\) 开头的后缀和以 \(q\) 开头的后缀的前 \(r\) 个字符都是相等的。所以,\(\operatorname{LCP}(p,q)=r\) 实际上等价于 \ 阅读全文
posted @ 2025-02-23 20:39 Laoshan_PLUS 阅读(36) 评论(0) 推荐(0)
摘要: P2336 [SCOI2012] 喵星球上的点名 考虑后缀数组的常见套路:把所有串中间用奇怪字符拼在一起,记录每个位置上的字符是哪个文本串的,求出 \(\rm sa\) 和 \(\rm height\)。 看到子串,显然转化为后缀数组上的 LCP 问题。又由那条经典性质:\(\operatornam 阅读全文
posted @ 2025-02-23 20:22 Laoshan_PLUS 阅读(38) 评论(0) 推荐(0)
摘要: 后缀数组 SA 前置约定 字符串下标从 \(1\) 开始。 “后缀 \(i\)” 指字符串 \(s[i\dots n]\)。 定义 后缀数组(Suffix Array, SA)主要关系到两个数组:\(\text{sa}\) 和 \(\text{rk}\)。 其中 \(\text{sa}(i)\) 表 阅读全文
posted @ 2025-02-23 19:58 Laoshan_PLUS 阅读(43) 评论(4) 推荐(0)
摘要: CF939F Cutlet 题解 看了一眼竟没有思路,DP 还得再练啊。 首先容易发现正反面是对称的,所以可以钦定当前烤的永远是正面,然后可以设 \(f_{i,j}\) 表示烤到第 \(i\) 分钟、反面烤了 \(j\) 分钟的最小翻转次数。则有转移方程: \[f_{i,j}=\min\begin{ 阅读全文
posted @ 2025-02-23 19:49 Laoshan_PLUS 阅读(78) 评论(0) 推荐(0)