题解 \(by\;zj\varphi\) 考虑对于母串的每个字符,它在匹配串中有多少前缀,多少后缀. 设 \(f_i\) 表示 \(i\) 位置匹配上的前缀,\(g_i\) 为后缀,那么答案为 \(\sum_{i=1}^{len}f_i×g_i\) 那么如何求出 \(f_i\) 和 \(g_i\),考虑二分,求出一个最长的前缀,后缀. 在初始化时,将所有后缀记录上它的子后缀,前缀同理,用 \(trie\) 树就行,记得用 unordered_map Code: #include<bits/std…