Loading

摘要: 首先考虑转化为枚举分界点 \(i\),令 \(f_i\) 表示 \(s_j\) 与 \(t_{[l, i]}\) 匹配的 \(j\) 的个数,\(g_i\) 表示 \(s_j\) 与 \(t_{[i, r]}\) 匹配的 \(j\) 的个数,则答案为 \(\sum f_i \times g_{i + 阅读全文
posted @ 2026-01-04 20:13 循环一号 阅读(4) 评论(0) 推荐(0)
摘要: 怎么总是忘。 默认 \(s\) 为 0-indexed。 首先前缀函数:\(\pi[i]\) 怎么求。 由于 \(\pi[i + 1] - \pi[i] \le 1\),所以最好情况就是 \(s[i + 1] = s[\pi[i]]\),此时 \(\pi[i + 1] = \pi[i] + 1\), 阅读全文
posted @ 2026-01-04 14:40 循环一号 阅读(4) 评论(0) 推荐(0)
摘要: 方法一:二分 Hash,时间复杂度 \(\mathcal{O}(n \log n)\) 方法二:记 \(R_i\) 为以 \(i\) 结尾的最长回文子串的长度,则 \(R_i \le R_{i - 1} + 2\),每次从 \(R_{i - 1} + 2\) 开始枚举即可。时间复杂度 \(\math 阅读全文
posted @ 2026-01-04 14:02 循环一号 阅读(10) 评论(0) 推荐(0)
摘要: AC 自动机常用于解决多模匹配问题。 首先 \(t\) 为模式串,\(s\) 为文本串。\(Q\) 为自动机的状态集合,我们对所有模式串建立一颗字典树。记 \(fail_u\) 表示 \(v \in Q\),\(v\) 为 \(u\) 的最长后缀。然后 \(son_{u, c}\) 表示 \(\te 阅读全文
posted @ 2026-01-04 11:28 循环一号 阅读(12) 评论(0) 推荐(0)
摘要: 主要用途:静态,离线的区间询问可以更快。 考虑线段树的区间查这个问题。 先把序列补成 \(2\) 的整幂,每个点代表 \((l, r]\),使用堆式建树,则只需要知道 \([x, x]\) 和 \([y, y]\) 所代表的节点的 LCA,LCA 的编号为两个点二进制下编号的 LCP,\(x, y\ 阅读全文
posted @ 2026-01-04 10:12 循环一号 阅读(4) 评论(0) 推荐(0)