时间限制3.5s,空间512MB
题目描述
T组数据,每组给出一段字符串,求其中不同的回文串有几个。
数据范围
T<=10,len<=1e6.
题目解析
正解是回文自动机,答案为自动机中节点数-2,但是并不会。
考场上写了一个花里胡哨的马拉车加trie。
跑马拉车时若当前直接匹配到的地方为cj[i],则用并查集加二分查找找出该点所对应的trie节点,之后继续匹配时向trie中加数,答案是trie中非‘#’字符个数。复杂度O(len *loglen*t).
爆炸了100——20.无法debug.
发现其他人暴力过了。于是可以在匹配完成后如果该串长度大于cj[zai*2-i],则暴力往trie中加入该回文串(除第一位外不加‘#’),复杂度O(玄学)。答案即为trie中节点个数-1(多一个‘#’)
莫得办法。
原文:https://www.cnblogs.com/betablewaloot/p/12130205.html