不会 PAM,来个简单做法。
考虑插入 $\$$ 字符,然后 manachar 找出所有回文子串。
考虑将所有回文子串截一半出来挂 Trie 上,显然点数是 O(n)O(n)O(n) 的,数目统计可以树上差分。
注意到 manachar 的过程要求我们快速找到树上若干级祖先,又由于树是动态建立的,可以直接树上倍增找祖先。
总复杂度 O(nlogn)O(n\log n)O(nlogn),空间复杂度 O(nlogn+n∣Σ∣)O(n\log n+n|\Sigma|)O(nlogn+n∣Σ∣)。
参考代码。
注册一个 BZOJ by HydroOJ 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 HydroOJ 通用账户