题面描述
求一个字符串的连续非空子串与询问串本质不同的非公共子串个数
题解
一开始没看到本质不同,第二个下发数据完全不一致才发现
如果我们要求一个字符串的本质不同子串个数,那么我们只需要对于 \(Parent\) 树上的每一个节点 \(x\) 累计求和 \(maxlen(x)-maxlen(parent(x))\)
现在,又多了一个字符串,导致每个节点产生和原来不一致的贡献,考虑每个节点表示的子串是相应 \(endpos\) 前缀的后缀,也就是说对于每个位置,我们处理下以该位置结尾的前缀与另一个字符串某一子串 \(LCS\) 的最大值 \(L\),处理一下 \((0,\ L]\) 和 \((maxlen(parent(x)), maxlen(x)]\) 的区间交算下贡献即可,\(L\) 可以通过后缀自动机上的匹配解决