[HAOI2016]找相同字符

考虑在一个字符串里取出两个子串相同的方案数, 一个方案记为二元组 ([l1,r1],[l2,r2]), 要满足 l1 ≤ l2, 两个表示不同的方案也算不同。

考虑取出两个子串,这两个子串相同, 长度都为 L, 则会有和这两个子串的开头分别相同的两个后缀的 LCP ≥ L, 设这个 LCP 的数值为 k, 则这两个后缀对答案的贡献就是 k,所以答案就是 ijLCP(suf[i],suf[j])

所以跟某个叫做 “差异” 的题目做法一样, 还是在 height 数组里搞并查集。

最后的答案就是容斥一下就行了。

posted @   xwmwr  阅读(101)  评论(0编辑  收藏  举报
编辑推荐:
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
阅读排行:
· 为DeepSeek添加本地知识库
· .NET程序员AI开发基座:Microsoft.Extensions.AI
· 精选4款基于.NET开源、功能强大的通讯调试工具
· 数据不出内网:基于Ollama+OneAPI构建企业专属DeepSeek智能中台
· 大模型工具KTransformer的安装
点击右上角即可分享
微信分享提示