[JSOI2013]快乐的 JYY
题意:
题面很啰嗦,大致意思就是:给你两个字符串 ,求有多少对 的子串和 的子串是相同的字符串且是回文串。
输入:PUPPY PUPPUP
输出:17
额,manacher傻乎乎的,没法解决回文串出现次数这类的问题,所以我们用 。
其实很简单,不要想太多。
的每一个点表示一个本质不同的回文串,那么我们如果知道这个串在 中的出现次数和在 中的出现次数乘起来就是这个串的答案。
那么我们将两个字符串分别建一个 ,统计答案时将两个 同时遍历,保证遍历的两个位置表示的是同一个串,如果有任何一个没有往下走的路:,那么就找别的路,因为有一个字符串中没有相应的回文串那么以后更长的回文串也不可能产生贡献了。
由于奇数长度的回文树和偶数长度的回文树独立且互不交叉,所以分别遍历一遍,将所有乘积加起来即为答案。
怎样统计出现次数,只需要沿着 树从深到浅拓扑就行了,因为 树上的点是按相同的右端点连接的,将同一个右端点最长的回文串开始将所有回文串次数加一,可以保证不重不漏。
遇到要建两个或者多个 的题,用结构体真香。
首先记得 号点和 号点是不能算入贡献的。
然后要记得开。。。
__EOF__

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具