题意
我现在希望求出一个更强大num数组一一对于字符串S的前i个字符构成的子串,既是它的后缀同时又是它的前缀,并且该后缀与该前缀不重叠,将这种字符串的数量记作num[i]。
然后输出$ _ {i = 1} ^ L (num[i] + 1) $
题解
这道题十分显然,求出nextx
数组的同时求出自动机状态里的集合大小,然后枚举区间的右端点,满足题意不重叠的条件之后就可以算答案了。 ## 代码
1 |
|
我现在希望求出一个更强大num数组一一对于字符串S的前i个字符构成的子串,既是它的后缀同时又是它的前缀,并且该后缀与该前缀不重叠,将这种字符串的数量记作num[i]。
然后输出$ _ {i = 1} ^ L (num[i] + 1) $
这道题十分显然,求出nextx
数组的同时求出自动机状态里的集合大小,然后枚举区间的右端点,满足题意不重叠的条件之后就可以算答案了。 ## 代码
1 | #include <cstdio> |