给原串,和若干个询问串。求原串里有多少个不同子串可以通过询问串循环移动得到。
循环串只需要$s[i+len]=s[i]$,然后$LCS$匹配,然后尽力往上跳使得$\geq len$ ,因为这样$endpos$最大。
而且需要循环会重复,所以每次可以标记下匹配到那里。下次如果还是哪里就不用重复计算了。
代码
1 |
|
给原串,和若干个询问串。求原串里有多少个不同子串可以通过询问串循环移动得到。
循环串只需要$s[i+len]=s[i]$,然后$LCS$匹配,然后尽力往上跳使得$\geq len$ ,因为这样$endpos$最大。
而且需要循环会重复,所以每次可以标记下匹配到那里。下次如果还是哪里就不用重复计算了。
1 |
|