由于本质不同的回文子串数量是O(n)的,考虑在对于每个回文子串在第一次找到它时对其暴力统计.可以发现manacher时若右端点移动则找到了一个新回文串.注意这样会漏掉串长为1的情况,特判一下. 现在问题变为统计一个子串的出现次数.可以用SA,二分乱搞一下即可.这里使用SAM.以parent树上表示该子串的节点为起点,用倍增往上跳,找到深度最小的满足len限制的点就好了,出现次数就是其right集合的大小. uojAC,luoguRE一个点,bzojMLE…… #include<iostream>…