[XSY3320] string (AC自动机,哈希,点分治)

这篇博客探讨了如何利用AC自动机和哈希来解决点分治中求解经过重心的回文路径个数的问题。通过建立从根到每个节点的字符串AC自动机,结合回文前缀和边界的理论,利用哈希判断回文串,并根据回文串的等差数列性质,计算节点的贡献。通过分块和暴力跳fail优化,降低了空间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XSY3320

前置芝士:回文前缀&& b o r d e r border border
推荐博客
推荐博客

考虑点分治,问题变成求经过重心的回文路径个数。
一条经过重心的回文路径长这样:
在这里插入图片描述

x x x z z z的串与 y y y r o o t root root的串相同。

建出根到每个节点对应的串的AC自动机,并在 f a i l fail fail树上找出每个串的回文前缀。判断根到某个节点对应的串是不是回文串可以用哈希解决。

根据 b o r d e r border border理论,一个回文串的所有回文前缀的长度可以组成一个不超过 O ( l o g n ) O(logn) O(logn)项的等差数列。即若 T k T_k Tk是回文串, T k T_k Tk的最长回文真前缀是 T k − 1 T_{k-1} Tk1 T k − 1 T_{k-1} Tk1的最长回文真前缀是 T k − 2 T_{k-2} Tk2,…, T 2 T_2 T2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值